Как обновить плагин cordova (phonegap) в моем проекте?

Кто-нибудь знает, что является правильным способом обновить плагин cordova в моем проекте cordova/phonegap? Некоторое время назад я установил плагин для файлов как:

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/platform/android/assets/www/plugins и myproject/platform/ios/www/plugins), где он установил файлы, которые я установил в первый раз.

Таким образом, мой проект по-прежнему использует старую версию плагина.

Так интересно, как обновлять плагины. Есть идеи? Нужно ли копировать их вручную в папки платформы? Является ли это документированным где угодно?

Спасибо заранее.

Ответы

Ответ 1

Так что в итоге я нашел проблему.

Кажется, что существует некоторая зависимость между org.apache.cordova.file и org.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