管理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
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.json
和platforms/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 回答
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提供的功能 .所以似乎走“科尔多瓦方式”可能更具有前瞻性 .
看那些门票:
https://github.com/driftyco/ionic-cli/issues/904
https://github.com/driftyco/ionic-cli/issues/1324
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:然后,当你做
ionic state restore
时,它将尊重列出的版本 .我会尝试使用
ionic state save
和ionic state restore
管理包括插件在内的配置...有关详细信息,请参阅文档