Обновите плагины Cordova одной командой


124

Мне интересно, есть ли более простой способ обновить плагин Cordova?

Я погуглил, нашел крючок (@ 2013 год), но это не на 100% то, что я хочу.

Я знаю, что могу сделать это в два этапа: rm, затем добавить, но я ищу лучший (официальный) способ помочь мне, какие плагины имеют более новую версию? и я могу обновить их ВСЕ одной командой. (как: обновление npm)

например:

$ cordova plugin list
/* list all installed plugins, their dependencies, and newer versions */

$ cordova plugin update
/* update all of them for me */

если официального способа нет, есть ли другой помощник? Эй?


AFAIK, я так не думаю
AtanuCSE

Вот bash-скрипт, который делает это stackoverflow.com/a/36378949/5966317
nick.graziano 02

Я пошел дальше и в моей папке проекта ios запустилpod update
Jacksonkr

Ответы:


222

Я устал вручную проверять наличие обновлений плагинов, поэтому создал инструмент, который сделает это за меня: https://github.com/dpa99c/cordova-check-plugins

Установите его глобально:

$ npm install -g cordova-check-plugins

Затем запустите из корня вашего проекта Cordova. При желании вы можете обновлять устаревшие плагины в интерактивном или автоматическом режиме, например

$ cordova-check-plugins --update=auto

Скриншот CLI


У меня возникли ошибки при запуске второй строки: ошибка вроде: plugin: cordova-plugin-statusbar source: npm: // cordova-plugin-statusbar установленная версия: UNKNOWN - проверьте plugins / fetch.json на наличие потерянных записей. удаленная версия: 2.1.1 Как решить эту проблему? спасибо
Agnosco 09

@Agnosco означает, что плагин не может определить локальный номер версии, вероятно, из-за повреждения fetch.json. Я бы предложил вручную удалить и повторно установить уязвимый плагин.
DaveAlden

Это восхитительно ! Возможным усовершенствованием было бы добавление возможности указывать аргументы команде при обновлении, например, для плагина facebook можно было бы обновлять автоматически и не иметь этой проблемыError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Джереми Белоло

4
@JeremyBelolo cordova-check-plugins@1.1.4 добавляет поддержку для сохранения переменных при обновлении :-)
DaveAlden

1
@ Al-Mothafar Вы неправильно поняли, почему npm сообщает об уязвимостях системы безопасности. Как я уже говорил в проблеме, которую вы открыли , уязвимости пакетов, о которых сообщает npm, здесь неактуальны, поскольку это инструмент CLI, предназначенный для развертывания на локальном компьютере разработчика, к которому есть доступ только у вас, а не на удаленном общедоступном сервере, на котором они могут могут быть использованы хакерами.
DaveAlden

61

Вы не можете его обновить. Что вы можете сделать, так это удалить плагин cordova и добавить его снова.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save

Я думаю, что в --saveэтом нет необходимости, см. Cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig

52

ионное состояние устарело, как на ionic@3.7.0

Если вы используете ionic и ionic cli, вы можете запустить:

ionic state reset

До тех пор, пока вся информация о вашем плагине была сохранена в вашем package.json ранее, это по существу выполнит команду rm / add для всех ваших плагинов. Просто обратите внимание, что это также приведет к rm / добавлению ваших платформ, но это не имеет значения.

Это также удобно, когда вы игнорируете папки с плагинами из репозитория и хотите настроить проект на другом компьютере.

Очевидно, что это не дает прямого ответа на вопрос, но многие люди в настоящее время используют оба варианта и в конечном итоге останутся здесь.


если у вас есть плагины, определенные в config.xmlфайле, вы действительно можете просто удалить плагины и выполнить цикл rm / add на платформах. ionic platform addобнаружит недостающие плагины и добавит их. Но только те, которые определены вconfig.xml
A.Grandt

ionic state resetоднозначно удаляет плагины - ionic state restoreможет понадобиться их переустановить.
emc

1
Сброс состояния ionic - был обесценен в ionic-v1, поэтому вы больше не можете использовать эту команду.
FrodmanG

1
Ионное состояние [ERROR] было удалено в CLI 3.0. Мы рекомендуем использовать Cordova напрямую для управления плагинами и платформами Cordova.
Anil8753 04

31

Нашел еще один ответ от npmjs.org

https://www.npmjs.com/package/cordova-plugin-update

В основном это установка инструмента в ваш проект:

npm install -g cordova-plugin-update

когда закончите, вам нужно запустить команду

cordova-plugin-update

и он предложит вам обновить, если когда-либо будет доступна более новая версия плагина


Я пробовал, но он удалил плагины из config.xml, только что обновленного в package.json
Питер Т.

27

Вот сценарий bash, который я использую, работает на OSX 10.11.3.

#!/bin/bash

PLUGINS=$(cordova plugin list | awk '{print $1}')

for PLUGIN in $PLUGINS; do
    cordova plugin rm $PLUGIN --save && cordova plugin add $PLUGIN --save
done

Это может помочь, если есть конфликты, согласно комментарию шана . Отличие - добавление --forceфлажка при удалении.

#!/bin/bash

PLUGINS=$(cordova plugin list | awk '{print $1}')

for PLUGIN in $PLUGINS; do
    cordova plugin rm $PLUGIN --force --save && cordova plugin add $PLUGIN --save
done

1
это хороший хак, но он не сработает для плагинов, которым требуются параметры при установке, таких как cordova-plugin-facebook4
Макс

2
добавление --force может помочь в разрешении конфликтов плагин cordova rm $ PLUGIN --force --save
Дэн Джей

8

Это моя пакетная версия Windows для обновления всех плагинов одной командой

Как пользоваться:

Из командной строки в той же папке проекта запустите

c:\> batchNameFile

или

c:\> batchNameFile autoupdate

Где "batchNameFile" - имя файла .BAT со сценарием ниже.

Только для тестирования (первый пример) или для принудительной установки всех доступных обновлений (второй пример)

@echo off

cls

set pluginListFile=update.plugin.list

if exist %pluginListFile% del %pluginListFile%

Echo "Reading installed Plugins"
Call cordova plugins > %pluginListFile%
echo.

for /F "tokens=1,2 delims= " %%a in ( %pluginListFile% ) do (
   Echo "Checking online version for %%a"

   for /F "delims=" %%I in ( 'npm info %%a version' ) do (
     Echo "Local : %%b"
     Echo "Online: %%I"
     if %%b LSS %%I Call :toUpdate %%a %~1
     :cont
     echo.
   )
)

if exist %pluginListFile% del %pluginListFile%

Exit /B

:toUpdate
Echo "Need Update !"
if '%~2' == 'autoupdate' Call :DoUpdate %~1
goto cont

:DoUpdate
Echo "Removing Plugin"
Call cordova plugin rm %~1
Echo "Adding Plugin"
Call cordova plugin add %~1
goto cont

Этот пакет был протестирован только в Windows 10


6

Перейдите в cordovaкаталог вашего проекта и напишите

npm outdated

npmбудет отображаться ваш outdated plugins, если есть, plugin outdatedнапишите эту команду

npm update

Предварительный просмотр консоли


4

npm update -f его рабочая форма меня

npm update -f

он обновит все плагины и cli

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • onesignal-cordova-plugin@2.3.3
  • @ Ионно-нативный / устройство @ 4.6.0
  • @ Ионно-нативный / экран ориентации @ 4.6.0
  • @ Ионно-нативный / onesignal @ 4.6.0
  • @ Ионно-нативный / статус-бар @ 4.6.0
  • @ Ионно-нативный / Всплеск экран @ 4.6.0
  • @ Ионно-нативный / ядро ​​@ 4.6.0
  • @ Ионно-нативный / социальный обмен @ 4.6.0
  • @ Угловой / кли @ 1.7.3
  • cordova-plugin-splashscreen@5.0.3-dev добавил 322 пакета, удалил 256 пакетов, обновил 91 пакет и переместил 8 пакетов за 350,86 с.

3

Мне тоже понравилось бы что-то подобное - управление плагинами с помощью PhoneGap / Cordova CLI очень раздражает. Это сообщение в блоге может быть началом чего-то вроде этого, но я не совсем уверен: A) как это использовать или B) насколько хорошо это будет работать.

http://nocurve.com/cordova-update-all-plugins-in-project

Моя первоначальная попытка запустить весь скрипт прямо в командной строке терминала создала вывод текста с командами добавления / удаления плагинов ... но на самом деле они не выполнялись, они просто отражались в терминале. Я обратился к автору, надеясь, что они объяснят немного больше.


автор блога здесь - я понятия не имею, почему я просто повторил команды - они должны были запускаться - должно быть, вставил тестовую версию скрипта. В любом случае, надеюсь, это кому-то поможет ...
Амнон,

2

вы не можете обновить, но я написал командный файл, который удаляет мои плагины и устанавливает их снова, поэтому в этом случае все мои плагины обновляются автоматически, надеюсь, это решит вашу проблему

@echo off
for %%a in (
"com.ionic.keyboard"
"com.phonegap.plugins.PushPlugin"
"cordova-instagram-plugin"
"cordova-plugin-camera"
"cordova-plugin-crosswalk-webview"
"cordova-plugin-file"
"cordova-plugin-file-transfer"

) do call cordova plugin rm %%a


for %%b in (
"com.ionic.keyboard"
"com.phonegap.plugins.PushPlugin"
"cordova-instagram-plugin"
"cordova-plugin-camera"
"cordova-plugin-crosswalk-webview"
"cordova-plugin-file"
"cordova-plugin-file-transfer"


) do call cordova plugin add %%b

любой способ обновить этот скрипт, чтобы очистить имена плагинов от вывода cordova plugins?
mix3d

1

Самый простой способ - удалить папку плагинов. Выполните эту команду: cordova prepare Но, прежде чем запускать ее, вы можете проверить версию каждого плагина, которая, по вашему мнению, будет работать для вашей сборки, на веб-сайте репозитория плагинов Кордовы , а затем вам следует вручную изменить файл config.xml. Используйте верхний символ "^" в поле версии файла универсального языка моделирования "config", чтобы указать, что вы хотите, чтобы указанный плагин обновлялся до последней версии в будущем (при следующем запуске команды).


Хи-хи, верхняя морковь, в восторге. Это вызвало у меня улыбку. На самом деле это единственное число и называется кареткой (^).
AlphaBeta

0

Если вы устанавливаете сторонний пакет:

npm i cordova-check-plugins

Затем вы можете запустить простую команду

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

Помните, что принуждение к чему-либо всегда сопряжено с потенциальным риском поломки изменений.

Как указывалось в других ответах, соединяющие пакеты NPM, которые управляют этими плагинами, также требуют последующего обновления при обновлении плагинов, поэтому теперь вы можете проверить их с помощью:

npm outdated

А затем быстро обновите их с помощью

npm update

Теперь предварительно попробуйте снова запустить свое приложение и проверьте все, что потенциально пошло не так из-за критических изменений. Радость разработки программного обеспечения! :)



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.