使用npm + package.jsonpipe理cordova插件
我们有一个Angular + Ionic + Cordova项目和多个开发者,我们想要pipe理cordova插件依赖关系。 我们使用的是Cordova CLI 5+ ,当手动运行安装命令(例如, cordova plugin add cordova-plugin-camera
)时,会在package.json
文件的cordovaPlugins
部分添加一个新行。 以下是成品的外观:
"cordovaPlugins": [ "cordova-plugin-camera", "cordova-plugin-console", "cordova-plugin-contacts", "cordova-plugin-device", "cordova-plugin-dialogs", "cordova-plugin-file", "cordova-plugin-geolocation", "cordova-plugin-media", "cordova-plugin-media-capture", "cordova-plugin-network-information", "cordova-plugin-splashscreen", "cordova-plugin-statusbar", "cordova-plugin-vibration", "com.ionic.keyboard" ]
这一切都很好,除了我们无法find开发#2到npm安装这些插件的任何方式 – 相反,他必须单独运行这些命令,然后将一个重复的行添加到package.json
,污染存储库。 我们确定必须有一个命令来安装这些,但无法find它。 任何人都可以点亮一下吗?
是什么引起了我们的问题
我们最初使用这个离子+cordova+ Grunt种子项目产卵我们最初的应用程序。 该项目包括一些Cordova钩子 ,其中包括在运行相应的命令时,从package.json
的相关cordovaPlatforms
和cordovaPlugins
部分添加和删除平台和插件(即: cordova plugin add cordova-plugin-media
添加一行cordovaPlugins
)。
为了更好地支持本地testing(例如尝试插件的新版本),为了防止交叉开发依赖性问题,我们禁用了种子项目钩子,现在根据需要手工制作package.json
。
正确pipe理cordova插件
事实上, Ionic CLI使用package.json
来pipe理平台和插件方面的Cordova应用程序状态(从1.3.19版本开始出现)。
使用两个部分cordovaPlatforms
package.json
, cordovaPlatforms
和cordovaPlugins
已经允许我们做一个简单的ionic state restore
以获得Cordova环境的模拟,build筑等。
指定版本
为了进一步locking我们应用程序的状态和开发环境,我们还通过添加版本号来指定Cordova平台和插件的目标版本。 以下是我们使用的:
{ ... "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;博士
一旦你在package.json
获得了上述内容,就可以通过ionic state restore
(v1.3.19 +)来确保你的本地环境处于正确的状态,这将通过package.json
咀嚼,并根据需要安装平台和插件。
您可以添加一个postinstall命令。 往下看
{ "cordovaPlugins": [ "com.ionic.keyboard@1.0.4", ], "cordovaPlatforms": [ "android@4.1.1", ], "scripts": { "postinstall": "ionic state restore", "clean": "ionic platform remove android; ionic platform remove ios; ionic platform remove browser; git checkout package.json" } }
奖励:如果你希望开始清理,即重新安装所有平台,请使用npm run clean
然后使用npm install
可能会有点晚,但是这是我的postinstall脚本
"postinstall": "bower i && gulp && ionic state reset && ionic config build"
- 它会安装鲍尔依赖关系,例如离子库
- 它恢复cordova插件
- 它通过ionic config命令重新构build你所做的configuration