Как обновить плагин 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