使用 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.jsoncordovaPlugins 部分文件。这是成品的样子:

"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 中的相关 cordovaPlatformscordovaPlugins 部分添加和删除平台和插件时运行 相应的命令(即 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,它出现了)。

用两个部分 cordovaPlatformscordovaPlugins 填充 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 命令所做的配置