首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用npm + package.json管理cordova插件

使用npm + package.json管理cordova插件
EN

Stack Overflow用户
提问于 2015-05-05 09:50:10
回答 3查看 31.9K关注 0票数 57

我们有一个带有多个开发者的Angular + Ionic + Cordova项目,我们想要管理cordova插件的依赖关系。我们使用的是Cordova CLI 5+,当手动运行安装命令(例如cordova plugin add cordova-plugin-camera)时,会在package.json文件的cordovaPlugins部分添加一个新行。下面是最终产品的样子:

代码语言:javascript
复制
"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中添加一个重复的行,弄脏了存储库。我们确信一定有一个命令来安装它们,但是找不到它。有没有人能说点什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-12 21:31:03

是什么导致了我们的问题

我们最初使用这个Ionic + Cordova + Grunt seed project来生成我们最初的应用程序。当你运行相应的命令时(例如,cordova plugin add cordova-plugin-mediacordovaPlugins中添加一行),project includes会添加一些Cordova hooks,其中包括在package.json的相关cordovaPlatformscordovaPlugins部分中添加和删除平台和插件。

为了更好地支持本地测试(例如,尝试插件的新版本),并防止跨开发依赖问题,我们禁用了种子项目挂钩,现在根据需要手工制作package.json

正确管理Cordova插件

事实证明,Ionic CLI使用package.json来管理平台和插件方面的Cordova应用程序状态(似乎是从version 1.3.19开始)。

通过使用cordovaPlatformscordovaPlugins这两个部分来填充package.json,我们可以执行一个简单的ionic state restore来调整cordovaPlatforms环境的形状,以便进行仿真、构建等。

指定版本的

为了进一步锁定我们的应用程序的状态和开发环境,我们还通过添加版本号来指定我们正在使用的Cordova平台和插件的目标版本。下面是我们使用的内容:

代码语言:javascript
复制
{
  ...
  "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并安装平台和插件。

票数 89
EN

Stack Overflow用户

发布于 2015-09-06 03:46:20

您可以添加postinstall命令。看看下面

代码语言:javascript
复制
{
  "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

票数 12
EN

Stack Overflow用户

发布于 2015-11-01 14:00:36

也许在游戏中有点晚了,但这是我的postinstall脚本

代码语言:javascript
复制
    "postinstall": "bower i && gulp && ionic state reset && ionic config build"

  • 它安装了bower依赖项,例如ionic lib
  • 它恢复了Cordova plugins
  • 它重新构建了您通过ionic配置命令

执行的配置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30042975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档