What caused our release
We initially used this Ionic + Cordova + Grunt seed project to launch our initial application. The project includes a number of Cordova hooks , which, among other things, add and remove platforms and plugins from the corresponding cordovaPlatforms and cordovaPlugins in package.json when the corresponding command is run (i.e. cordova plugin add cordova-plugin-media adds a line to cordovaPlugins )
In order to better support local testing (for example, try to use new versions of the plugin), as well as to prevent dependency problems between different users, we disabled the hook of the project project and now, if necessary, package.json manually.
Proper management of Cordoba plugins
In turn, the Ionic CLI uses package.json to control the state of the Cordova application in terms of platforms and plugins (as of version 1.3.19 , it appears).
Filling package.json with two sections, cordovaPlatforms and cordovaPlugins allowed us to make a simple ionic state restore to get the Cordoba environment in a form for emulation, building, etc.
Specifying Versions
To further block the state of the application and development environment, we also indicated the target version of the Cordova platforms and plugins that we use by adding the version number. Here we use:
{ ... "cordovaPlatforms": [ "android@4.0.2", "ios@3.8.0" ], "cordovaPlugins": [ "cordova-plugin-camera@1.1.0", "cordova-plugin-contacts@1.1.0", "cordova-plugin-device@1.0.1", "cordova-plugin-file@2.1.0", "cordova-plugin-media@1.0.1", "cordova-plugin-media-capture@1.0.1", "cordova-plugin-network-information@1.0.1", "cordova-plugin-splashscreen@2.1.0", "cordova-plugin-statusbar@1.0.1", "cordova-plugin-vibration@1.2.0", "com.ionic.keyboard@1.0.5" ] }
TL; DR
After you have indicated above in your package.json , you can make sure that your local environment is in the correct state through ionic state restore (v1.3.19 +), which will scroll through package.json and install platforms and plugins as needed.