如何在我的项目中更新cordova(phonegap)插件?

时间:2014-03-15 18:17:40

标签: cordova phonegap-plugins cordova-plugins

任何人都知道在我的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),它安装了我第一次安装它们的文件。

因此我的项目仍然使用旧版本的插件。

所以我想知道,如何更新插件。任何的想法?我是否必须手动将它们复制到平台文件夹?这是在任何地方记录的吗?

提前致谢。

2 个答案:

答案 0 :(得分:18)

所以最终我发现了这个问题。

似乎org.apache.cordova.fileorg.apache.cordova.file-transfer之间存在某种依赖关系。因此,如果安装了file-transfer插件,则不会删除文件插件,因此如果平台文件夹不会更新。

解决方案是首先删除file-transfer插件,然后删除文件插件。然后添加文件和file-transfer插件将正确地更新所有平台中的插件,正如人们所期望的那样。

花了一些时间来弄清楚,但是做到了。

答案 1 :(得分:2)

派对有点晚了,但我在我的cordova-check-plugins工具中添加了一个可能在这种情况下有用的选项:

  

--force-update

     

强制更新相关插件。默认情况下,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