--- layout: post author: name: Audrey So url: https://twitter.com/aud_rey_so title: "Apache Cordova 7.0.0" categories: news tags: news releases --- We are happy to announce that `Apache Cordova 7.0.0` has been released! Most notable changes include: * [cordova@7.0.0](https://www.npmjs.org/package/cordova) * [cordova-lib@7.0.0](https://www.npmjs.org/package/cordova-lib) * [plugman@1.5.0](https://www.npmjs.com/package/plugman) * [cordova-app-hello-world@3.12.0](https://www.npmjs.com/package/cordova-app-hello-world) * [cordova-common@2.0.3](https://www.npmjs.com/package/cordova-common) * [cordova-create@1.1.0](https://www.npmjs.com/package/cordova-create) * [cordova-fetch@1.1.0](https://www.npmjs.com/package/cordova-fetch) * If a `package.json` does not exist in your project, it will be auto-created for you when `cordova prepare` is called. * When adding a platform or plugin, the previous default behavior of not-saving has changed to saving. Now it will automatically save that platform or plugin to your `config.xml` and `package.json`. Details about platform and plugin versions are also automatically saved in `config.xml` and `package.json`. The `--save` flag is no longer required to save. Use `--nosave` to prevent saving to `config.xml` or `package.json`. * Fetch is now the default method for fetching platforms. Fetch uses your system `npm` to `npm install` modules into your project. The `--fetch` flag is no longer required. Use the `--nofetch` flag to revert to pre-`Cordova@7.0` behavior (`npm install` is not used to fetch modules). * After `cordova prepare` is run, `package.json` and `config.xml` should contain identical platforms and versions. In case of conflicts, `package.json` is given precedence over `config.xml`. For example, suppose `package.json` contains `cordova-android@6.0.0` and `config.xml` contains `cordova-android@4.0.0`. After `cordova prepare` is run, `config.xml` and `package.json` will each contain only `cordova-android@6.0.0`. * Platforms and plugins are now required to have a `package.json` file. * We have added support for custom platforms. This will allow future custom platforms, and modified versions of existing platforms. Example: ``` cordova platform add custom-platform-name ``` * A `cordova config` command has been created to `set`, `get`, `delete`, `edit`, and `list` global Cordova options. For example, you can use the following command `cordova config set ` to set the value of `autosave` or `fetch` to `true` or `false`. In the following case, you are turning off `autosave` as the default setting. `autosave` is true by default in cordova. Example: ``` cordova config set autosave false ``` In the following case, you are turning off `fetch` as the default setting. `fetch` is `true` by default in cordova. Example: ``` cordova config set fetch false ``` In addition, the `cordova config` command supports the `browserify` setting, which allows the JavaScript of plugins to be loaded at build time compared to run time. For instance, if the `browserify` value is not explicitly passed in by the user, the `cordova config` command will automatically set the `browserify` value saved in `~/.config/configstore/` to be saved `globally`. Users can get and set `browserify`. `browserify` is `false` by deafult in cordova. Example: ``` cordova config get browserify cordova config set browserify true ``` * Dropped support for node 0.x. Only node versions 4.0 and up are supported. * Dropped support for wp8 (windows phone 8). * `cordova-windows` : dropped support for any versions older than 4.0.0. * `cordova-android` : dropped support for any versions older than 5.0.0. * `cordova-ios` : dropped support for any versions older than 4.0.0. * `cordova-osx` : dropped support for any versions older than 4.0.0. To upgrade: npm install -g cordova@latest Please report any issues you find at [issues.cordova.io](http://issues.cordova.io/)! # Changes include: ## cordova-lib * [CB-12747](https://issues.apache.org/jira/browse/CB-12747): updated pinned platforms * [CB-12705](https://issues.apache.org/jira/browse/CB-12705): Modified `(before|after)_plugin_(uninstall|install)` to always expect existence of plugin field * [CB-12705](https://issues.apache.org/jira/browse/CB-12705): Pass plugin info to project `*_plugin_install` hooks * [CB-11242](https://issues.apache.org/jira/browse/CB-11242): removed support for platforms that don't have a `package.json` * [CB-11242](https://issues.apache.org/jira/browse/CB-11242): updated tests and fixtures * [CB-11242](https://issues.apache.org/jira/browse/CB-11242): refactored out `getPlatformApiFunction` * [CB-11242](https://issues.apache.org/jira/browse/CB-11242): removed `parser` and `handler` files for deprecated versions of platforms * [CB-12683](https://issues.apache.org/jira/browse/CB-12683): improved error messaging for when a plugin doesn't have `package.json` * [CB-12674](https://issues.apache.org/jira/browse/CB-12674): Added deprecation notice for **blackberry10** and **ubuntu** * [CB-11777](https://issues.apache.org/jira/browse/CB-11777): Restore plugins before preparing * [CB-12643](https://issues.apache.org/jira/browse/CB-12643): removed references to **wp8** * [CB-12645](https://issues.apache.org/jira/browse/CB-12645): removed references to **firefoxos** * [CB-12665](https://issues.apache.org/jira/browse/CB-12665): removed `engineStrict` as it is no longer supported * [CB-12612](https://issues.apache.org/jira/browse/CB-12612): removing old `amazon-fireos` code * [CB-12425](https://issues.apache.org/jira/browse/CB-12425): autocreate a `package.json` if it doesn't exist during `cordova prepare` * [CB-12517](https://issues.apache.org/jira/browse/CB-12517): `package.json` `name` field is `config.xml` `id` field and `package.json` `displayName` field is `config.xml` `name` field * [CB-12592](https://issues.apache.org/jira/browse/CB-12592): added `requireNoCache` function and replaced instances of `delete.require cache` * [CB-12606](https://issues.apache.org/jira/browse/CB-12606): Fix plugin dependency installation. Now it respects the `spec` specified for dependencies of plugins in `plugin.xml` * [CB-12016](https://issues.apache.org/jira/browse/CB-12016): removed `pluginMapper` code from uninstall * [CB-12337](https://issues.apache.org/jira/browse/CB-12337): Resolve symbolic links in project root * [CB-11346](https://issues.apache.org/jira/browse/CB-11346): Remove known platforms check * [CB-11977](https://issues.apache.org/jira/browse/CB-11977): removed support for `node 0.x` * [CB-12021](https://issues.apache.org/jira/browse/CB-12021): Added local path support to `--fetch` and fixed failing tests for adding a relative path * [CB-11960](https://issues.apache.org/jira/browse/CB-11960): Added support to `package.json` for platform/plugin add/rm * [CB-12001](https://issues.apache.org/jira/browse/CB-12001): Added support for platform/plugin & `spec` restore to sync `config.xml` and `package.json` ## cordova-cli * [CB-12570](https://issues.apache.org/jira/browse/CB-12570): `cordova-fetch` is true by default. Use `--nofetch` flag to fetch platforms and plugins using old fetching logic. * [CB-12665](https://issues.apache.org/jira/browse/CB-12665): removed `engineStrict` as it is no longer supported * [CB-11982](https://issues.apache.org/jira/browse/CB-11982): added `edit` and `ls` to `cordova config` * [CB-11982](https://issues.apache.org/jira/browse/CB-11982): added new `cordova config` command that `sets`, `gets`, and `deletes` global environment variables. * [CB-12008](https://issues.apache.org/jira/browse/CB-12008): updated docs to reflect new autosave changes and removed variables missed due to rebase * [CB-12008](https://issues.apache.org/jira/browse/CB-12008): made autosave the default for platform and plugin add/remove * [CB-11977](https://issues.apache.org/jira/browse/CB-11977): removed support for `node 0.x` ## cordova-fetch * [CB-12665](https://issues.apache.org/jira/browse/CB-12665): removed `enginestrict` since it is deprecated * added support for dealing with local path targets ## cordova-common * [CB-8978](https://issues.apache.org/jira/browse/CB-8978): Add option to get `resource-file` from `root` * [CB-11908](https://issues.apache.org/jira/browse/CB-11908): Add tests for `edit-config` in `config.xml` * [CB-12665](https://issues.apache.org/jira/browse/CB-12665): removed `enginestrict` since it is deprecated ## plugman * [CB-12747](https://issues.apache.org/jira/browse/CB-12747): Updated `cordova-lib` dependency to `7.0.0` ## cordova-create * [CB-10681](https://issues.apache.org/jira/browse/CB-10681): templates will add `@latest` when fetching from npm when no version is specified. This will ensure an older cached version of the template is not used * [CB-12666](https://issues.apache.org/jira/browse/CB-12666): Remove `node 0.x` support. * [CB-12517](https://issues.apache.org/jira/browse/CB-12517): `package.json` `displayname` should equal `config.xml` name field and `package.json` `name` field should equal `config.xml` `id` field. ## cordova-app-hello-world * [CB-12684](https://issues.apache.org/jira/browse/CB-12684): added `package.json` to default hello world app * Add GitHub pull request template ## Pinned Platform Versions for **Cordova CLI 7.0.0** * Cordova Android: ~6.2.2 * Cordova BlackBerry10: ~3.8.0 * Cordova Browser: ~4.1.0 * Cordova iOS: ~4.4.0 * Cordova OSX: ~4.0.1 * Cordova Ubuntu: ~4.3.4 * Cordova Windows: ~5.0.0 * Cordova WebOS: ~3.7.0