管理 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
优点
config.xml
如下所示:<plugin name="cordova-plugin-device" spec="~1.0.1" />
<engine name="browser" spec="~4.0.0" />
缺点
config.xml
弄乱了项目的根目录plugins/fetch.json
中的重复信息和 platforms/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
优点
package.json
使用以下自定义键:cordovaPlugins
cordovaPlatforms
缺点
dependencies
因为它们无论如何都是 NPM 包?ionic
可以符号链接(symbolic link) node_modules
之间的依赖关系& {plugins,platforms}/
ionic & cordova 开发人员是否正在考虑对此事进行统一/重构?
请您参考如下方法:
编辑:第二次更新! 2017.05.
它再次发生变化 - 这次是在 Cordova 方面。
Cordova 7 添加了对 package.json
的支持!
参见 Cordova 博客:http://cordova.apache.org/news/2017/05/04/cordova-7.html
编辑:更新 2016.05。
由于缺少 ionic
中的功能,似乎创建了许多 cordova
命令,但由于cordova catch 了并实现了许多新功能, ionic 维护人员正在考虑转储他们的命令,如 ionic state
以支持cordova提供的命令。
因此,似乎走“cordova 方式”可能更具前瞻性。
看那些票:
原始答案(2016.03.):
我会说这是个人品味的问题。无论您采用哪种解决方案,最好保持一致,然后始终使用
cordova plugin add ...
或
ionic plugin add
,不要将两者混合使用。
仅供引用,您可以使用 ionic 的解决方案进行版本固定,但确实,您必须手动放置,或者您必须在安装期间明确指定版本,例如
ionic plugin add ionic-plugin-keyboard@1.0.8
。在这方面, ionic 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
时,它将尊重列出的版本。