首页 文章

package.json vs config.xml for cordova plugins

提问于
浏览
32

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

在使用 cordova@5.4.0ionic-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

Pros

  • 平台和插件属于Cordova领域,因此使用cordova似乎很直观

  • 平台和插件版本保存在 config.xml 中,如下所示:

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

Cons

  • 又一个配置文件 config.xml ,它使项目的根目录混乱

  • plugins/fetch.jsonplatforms/platforms.json 中的重复信息?

  • 必须明确添加 --save 选项

with 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

优点

  • 项目的依赖项使用以下自定义键合并到 package.json 中:

  • cordovaPlugins

  • cordovaPlatforms

  • 添加平台或插件时的自动保存行为

缺点

  • 没有针对插件的版本固定或package.json中的平台(这对我来说是一个巨大的阻碍)

  • 为什么不将cordova插件和平台放入 dependencies ,因为它们仍然是NPM包? ionic 可以符号链接 node_modules{plugins,platforms}/ 之间的依赖关系

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

2 回答

  • 2

    Edit: second update! 2017.05.

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

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

    Edit: update 2016.05.

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

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

    看那些门票:

    Original answer (2016.03.):

    它说's a matter of person taste I' . 无论您采用何种解决方案,最好保持一致,然后始终使用 cordova plugin add ...ionic plugin add 并且不要将两者混合使用 .

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

    例如,这是带有固定插件版本和平台版本的 package.json ,还固定了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"
      ]
    

    然后,当你做 ionic state restore 时,它将尊重列出的版本 .

  • 26

    我会尝试使用 ionic state saveionic state restore 管理包括插件在内的配置...有关详细信息,请参阅文档

相关问题