package.json vs config.xml for cordova plugins

Jul*_*ang 33 cordova ionic-framework cordova-plugins ionic

管理Cordova插件和平台的正确方法是什么?

在使用cordova@5.4.0&的项目中ionic-cli@1.7.8,我面临两种可能性:

与Cordova(config.xml)

cordova create dummy-project && cd dummy-project
cordova platform add browser --save
cordova plugin add cordova-plugin-device --save

## If forgot to add `--save` option, manually update config.xml
#cordova platform save
#cordova plugin save

# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins

# `cordova prepare` automatically setup platforms & plugins
# dependencies via config.xml
cordova prepare
Run Code Online (Sandbox Code Playgroud)

优点

  • 平台和插件属于Cordova领域,因此使用cordova似乎很直观
  • 平台和插件版本保存config.xml如下:

    <plugin name="cordova-plugin-device" spec="~1.0.1" />
    <engine name="browser" spec="~4.0.0" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 签出repo的多个开发人员将获得相同的依赖关系

缺点

  • 另一个配置文件config.xml使项目的根目录混乱
  • 重复的信息plugins/fetch.jsonplatforms/platforms.json
  • 必须明确添加--save选项

与Ionic(package.json)

ionic start dummy-project blank && cd dummy-project
ionic platform add browser
ionic plugin add cordova-plugin-device

# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins

# fetch platforms & plugins dependencies via package.json
ionic state restore
Run Code Online (Sandbox Code Playgroud)

优点

  • package.json使用以下自定义键合并项目的依赖项:
    • cordovaPlugins
    • cordovaPlatforms
  • 添加平台或插件时的自动保存行为

缺点

  • 没有版本固定插件或package.json 中的平台(这对我来说是一个巨大的阻碍)
  • 为什么不把cordova插件和平台放入,dependencies因为它们是NPM包呢? ionic可以符合node_modules&之间的依赖关系{plugins,platforms}/

ion和cordova开发人员是否考虑统一/重构此事?

jak*_*b.g 27

编辑:第二次更新!2017.05.

它再次改变 - 这次是在科尔多瓦方面.科尔多瓦7增加了支持package.json!

请参阅Cordova博客:http://cordova.apache.org/news/2017/05/04/cordova-7.html

编辑:更新2016.05.

似乎许多ionic命令是由于缺乏功能而创建的cordova,但由于cordova赶上并实现了许多新功能,离子维护者正在考虑倾销他们的命令ionic state,而不是支持cordova提供的命令.

所以似乎走"科尔多瓦方式"可能更具有前瞻性.

看那些门票:

原始答案(2016.03.):

我会说这是人的品味问题.无论您采用何种解决方案,最好保持一致,然后始终使用cordova plugin add ...ionic plugin add不混合两者.

仅供参考,您可以使用离子解决方案固定版本,但是确实如此,您必须手动放置,或者您必须在安装期间明确指定版本,例如ionic plugin add ionic-plugin-keyboard@1.0.8.关于这一点,离子CLI肯定有改进的余地.

例如,这是我们package.json的pinned插件版本和平台版本,也固定github SHA1:

  "cordovaPlugins": [
    "ionic-plugin-keyboard@1.0.8",
    "cordova-plugin-inappbrowser@1.2.0",
    "phonegap-plugin-push@1.5.3",
    {
      "locator": "https://github.com/Initsogar/cordova-webintent.git#3d12378de9f38be900761a0ad06ab697cf6d9add",
      "id": "com.borismus.webintent"
    },
    {
      "variables": {
        "APP_ID": "123456789987654321",
        "APP_NAME": "TEST"
      },
      "locator": "cordova-plugin-facebook4@1.6.3",
      "id": "cordova-plugin-facebook4@1.6.3"
    }
  ],
  "cordovaPlatforms": [
    "android@4.1"
  ]
Run Code Online (Sandbox Code Playgroud)

然后,当您这样做时ionic state restore,将遵守列出的版本.

  • 2016-08-31相关离子票改为https://github.com/driftyco/ionic-cli/issues/1324 (3认同)