使用 npm + package.json 管理 cordova 插件
Manage cordova plugins with npm + package.json
我们有一个 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 npm 安装这些插件 - 相反,他必须单独 运行 命令,然后将重复的行添加到 package.json
,弄脏了存储库。我们确定必须有一个命令来安装这些,但找不到它。任何人都可以解释一下吗?
是什么导致了我们的问题
我们最初使用此 Ionic + Cordova + Grunt seed project to spawn our initial app. The project includes a number of Cordova hooks,除其他外,当您在 package.json
中的相关 cordovaPlatforms
和 cordovaPlugins
部分添加和删除平台和插件时运行 相应的命令(即 cordova plugin add cordova-plugin-media
添加一行到 cordovaPlugins
)。
为了更好地支持本地测试(例如尝试新版本的插件),并防止跨开发依赖问题,我们禁用了种子项目挂钩,现在根据需要手工制作 package.json
.
正确管理 Cordova 插件
原来,Ionic CLI uses package.json
to manage Cordova app state in terms of platforms and plugins (as of version 1.3.19,它出现了)。
用两个部分 cordovaPlatforms
和 cordovaPlugins
填充 package.json
使我们能够做一个简单的 ionic state restore
来获得 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 依赖项,例如离子库
- 它恢复 Cordova 插件
- 它会重新构建您通过 ionic config 命令所做的配置
我们有一个 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 npm 安装这些插件 - 相反,他必须单独 运行 命令,然后将重复的行添加到 package.json
,弄脏了存储库。我们确定必须有一个命令来安装这些,但找不到它。任何人都可以解释一下吗?
是什么导致了我们的问题
我们最初使用此 Ionic + Cordova + Grunt seed project to spawn our initial app. The project includes a number of Cordova hooks,除其他外,当您在 package.json
中的相关 cordovaPlatforms
和 cordovaPlugins
部分添加和删除平台和插件时运行 相应的命令(即 cordova plugin add cordova-plugin-media
添加一行到 cordovaPlugins
)。
为了更好地支持本地测试(例如尝试新版本的插件),并防止跨开发依赖问题,我们禁用了种子项目挂钩,现在根据需要手工制作 package.json
.
正确管理 Cordova 插件
原来,Ionic CLI uses package.json
to manage Cordova app state in terms of platforms and plugins (as of version 1.3.19,它出现了)。
用两个部分 cordovaPlatforms
和 cordovaPlugins
填充 package.json
使我们能够做一个简单的 ionic state restore
来获得 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 依赖项,例如离子库
- 它恢复 Cordova 插件
- 它会重新构建您通过 ionic config 命令所做的配置