使用npm和x2B管理cordova插件;package.json
我们有一个Angular+Ionic+Cordova项目,其中有多个开发人员,我们希望管理Cordova插件的依赖关系。我们正在使用,并且在手动运行安装命令时(例如,使用npm和x2B管理cordova插件;package.json,npm,cordova-plugins,Npm,Cordova Plugins,我们有一个Angular+Ionic+Cordova项目,其中有多个开发人员,我们希望管理Cordova插件的依赖关系。我们正在使用,并且在手动运行安装命令时(例如,cordova plugin add cordova plugin camera),会在package.json文件的cordova plugins部分添加一行新行。以下是成品的外观: "cordovaPlugins": [ "cordova-plugin-camera", "cordova-plugin-console",
cordova plugin add cordova plugin camera
),会在package.json
文件的cordova plugins
部分添加一行新行。以下是成品的外观:
"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
中添加一行重复的代码,弄脏了存储库。我们确信必须有一个命令来安装这些,但找不到它。有人能解释一下吗?是什么导致了我们的问题
我们最初使用它来生成我们的初始应用程序。在运行相应的命令时(即,
cordova plugin add cordova plugin media
向cordova plugins
添加一行代码),可以从package.json中的相关cordova platforms
和cordova plugins
部分添加和删除平台和插件
为了更好地支持本地测试(例如,尝试插件的新版本),并防止跨开发人员依赖性问题,我们禁用了种子项目挂钩,现在根据需要手工制作package.json
正确管理Cordova插件
事实证明,它使用package.json
来管理Cordova应用程序在平台和插件方面的状态(看起来是从)
用两个部分填充package.json
,CordovaPlatform
和cordovaPlugins
使我们能够执行一个简单的离子状态恢复
,以使Cordova环境处于模拟、构建等状态
指定版本
为了进一步锁定我们的应用程序的状态和开发环境,我们还通过添加版本号指定了我们正在使用的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
,并根据需要安装平台和插件。您可以添加一个安装后命令。往下看
{
"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": "bower i && gulp && ionic state reset && ionic config build"
- 它安装bower依赖项,例如ionic lib
- 它可以恢复Cordova插件
- 它重新构建了您通过离子配置命令所做的配置
FWIW,现在我们使用gulp cordova从package.json中读取上述配置的修改版本。将发布完整的解决方案,如果这是解决方案,一旦赏金期到期。运行cordova build时是否未安装它?cordova plugin add cordova-*
在package.json
文件的cordova plugins
部分添加一行。您是否找到了从ionic正在保存的“状态”安装插件的方法?如果是这样的话,我很想看看。在上面的答案中添加“ionic state restore”可能是有意义的,因为这是问题的实际答案。如果您看到“state is not a valid task”,那是因为您有一个过时的ionic cli版本。state命令在1.3.9版中可用。要修复此问题,只需更新ionic,如sonpm update-g ionic cli
,然后ionic state restore
即可。此插件是否安装了相同的版本?是否只需拉取最新版本的插件?我觉得奇怪的是,没有一个版本号出现在json@SDude我在答案中添加了版本控制信息。