我们有一个带有多个开发者的Angular + Ionic + Cordova项目,我们想要管理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"
]这一切都很好,除了我们找不到任何方法让dev #2安装这些插件-相反,他必须单独运行命令,这会在package.json中添加一个重复的行,弄脏了存储库。我们确信一定有一个命令来安装它们,但是找不到它。有没有人能说点什么?
发布于 2015-05-12 21:31:03
是什么导致了我们的问题
我们最初使用这个Ionic + Cordova + Grunt seed project来生成我们最初的应用程序。当你运行相应的命令时(例如,cordova plugin add cordova-plugin-media在cordovaPlugins中添加一行),project includes会添加一些Cordova hooks,其中包括在package.json的相关cordovaPlatforms和cordovaPlugins部分中添加和删除平台和插件。
为了更好地支持本地测试(例如,尝试插件的新版本),并防止跨开发依赖问题,我们禁用了种子项目挂钩,现在根据需要手工制作package.json。
正确管理Cordova插件
事实证明,Ionic CLI使用package.json来管理平台和插件方面的Cordova应用程序状态(似乎是从version 1.3.19开始)。
通过使用cordovaPlatforms和cordovaPlugins这两个部分来填充package.json,我们可以执行一个简单的ionic state restore来调整cordovaPlatforms环境的形状,以便进行仿真、构建等。
指定版本的
为了进一步锁定我们的应用程序的状态和开发环境,我们还通过添加版本号来指定我们正在使用的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;dr
一旦你在你的package.json中有了上面的内容,你就可以通过ionic state restore (v1.3.19+)确保你的本地环境处于正确的状态,它会根据需要通过package.json并安装平台和插件。
发布于 2015-09-06 03:46:20
您可以添加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
发布于 2015-11-01 14:00:36
也许在游戏中有点晚了,但这是我的postinstall脚本
"postinstall": "bower i && gulp && ionic state reset && ionic config build"执行的配置
https://stackoverflow.com/questions/30042975
复制相似问题