首页 文章

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

提问于
浏览
14

任何人都知道在我的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 回答

  • 18

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

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

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

    花了一些时间才弄明白,但是诀窍 .

  • 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 ),因为其他插件依赖于它们(例如 cordova-plugin-file-transfer ):

    $ cordova-check-plugins --update=auto --force-update
    

相关问题