任何人都知道在我的cordova / phonegap项目中更新cordova插件的正确方法是什么?前段时间我安装了文件插件:
cordova plugin add org.apache.cordova.file
一切都很好。现在我意识到有一个新版本的文件插件,所以我想更新以获得新功能。但是,我还没有找到一个体面的更新方式。实际上,我根本无法更新。
当我运行remove命令时:
cordova plugin rm org.apache.cordova.file
我收到以下消息:
Deleting plugin org.apache.cordova.file
No dangling plugins to remove.
有趣的是,如果我跑
cordova plugin
之后,我仍然在安装的插件列表中看到org.apache.cordova.file。此外,文件系统没有单一更改。没有删除任何内容,也没有更新文件。
然后我尝试再次添加一个插件(至于更新插件,建议删除它并再次添加):
cordova plugin add org.apache.cordova.file
哪个输出:
Fetching plugin "org.apache.cordova.file" via plugin registry
Plugin "org.apache.cordova.file" already installed on android.
Plugin "org.apache.cordova.file" already installed on ios.
而且,即使这会带来新版本的java和javascript文件(以及其他一些文件),正如我所料,它只会将它们带到myproject / plugins文件夹中。
它不会更新平台文件夹中的文件(myproject / platforms / android / assets / www / plugins和myproject / platforms / ios / www / plugins),它安装了我第一次安装它们的文件。
因此我的项目仍然使用旧版本的插件。
所以我想知道,如何更新插件。任何的想法?我是否必须手动将它们复制到平台文件夹?这是在任何地方记录的吗?
提前致谢。
答案 0 :(得分:18)
所以最终我发现了这个问题。
似乎org.apache.cordova.file
和org.apache.cordova.file-transfer
之间存在某种依赖关系。因此,如果安装了file-transfer
插件,则不会删除文件插件,因此如果平台文件夹不会更新。
解决方案是首先删除file-transfer
插件,然后删除文件插件。然后添加文件和file-transfer
插件将正确地更新所有平台中的插件,正如人们所期望的那样。
花了一些时间来弄清楚,但是做到了。
答案 1 :(得分:2)
派对有点晚了,但我在我的cordova-check-plugins工具中添加了一个可能在这种情况下有用的选项:
强制更新相关插件。默认情况下,Cordova / Phonegap 不允许删除其他插件所在的插件 依赖,因此不允许更新它们。对于 例如,
cordova-plugin-file-transfer
取决于cordova-plugin-file
。通过设置此选项,两个插件都将是 更新(如果有更新)。没有它,只有“父母” 插件 - 在这种情况下cordova-plugin-file-transfer
- 将是 更新。
因此,如果您全局安装该工具:
$ npm install -g cordova-check-plugins
然后从Cordova项目的根目录运行,您可以强制更新Cordova不允许删除的插件(例如cordova-plugin-file
),因为其他插件依赖于它们(例如{{1} }):
cordova-plugin-file-transfer