Оновіть плагіни cordova в одній команді


124

Мені цікаво, чи є простіший спосіб оновити плагін від cordova?

Я гуглив, знайшов гачок (@ рік 2013), але це не на 100% те, що я хочу.

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

наприклад:

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

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

якщо немає офіційного шляху, чи є ще якийсь помічник? йо?


AFAIK Я не вважаю так
AtanuCSE

Ось Баш скрипт , який робить це stackoverflow.com/a/36378949/5966317
nick.graziano

Я пішов на крок далі і в моїй папці проекту 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


У мене виникли помилки під час запуску другого рядка: помилка типу: плагін: cordova-plugin-statusbar джерело: npm: // cordova-plugin-statusbar встановлена ​​версія: UNKNOWN - перевірте плагіни / fetch.json на осиротілі записи. віддалена версія: 2.1.1 Як це можна вирішити? дякую
Агноско

@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


52

іонний стан застаріло, як на ionic@3.7.0

Якщо ви користуєтесь іонними та іонними кліпами, ви можете запустити:

ionic state reset

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

Це також добре, коли ви ігноруєте свої папки плагінів з репо, і хочете налаштувати проект на іншій машині.

Очевидно, це не відповідає безпосередньо на питання, але зараз багато людей використовують обидва, і вони опиняться тут.


якщо у config.xmlфайлі визначені плагіни , ви можете просто видалити плагіни та зробити цикл rm / add на платформах. ionic platform addвиявить відсутні плагіни та додасть їх. Але лише ті, що визначені вconfig.xml
А.Грандт

ionic state resetнапевно видаляє плагіни - ionic state restoreможливо, знадобиться їх перевстановити.
emc

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

1
[ПОМИЛКА] Іонний стан було видалено станом із CLI 3.0. Ми рекомендуємо використовувати Cordova безпосередньо для керування плагінами та платформами Cordova.
Anil8753

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

Ось базовий сценарій, який я використовую, працює на 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
Max

2
додавання --force може допомогти у конфліктах кордова плагін rm $ PLUGIN --force --save
Dan Jay

8

Це моя пакетна версія Windows для оновлення всіх плагінів в одній команді

Як використовувати:

З командного рядка в тій же папці проекту запустіть

c:\> batchNameFile

або

c:\> batchNameFile autoupdate

Де "batchNameFile" - це ім'я .BAT-файлу, зі сценарієм нижче.

Тільки для тесту (перший приклад) або для примушування кожного доступного оновлення (2-й приклад)

@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 оновлення -f

він оновить усі плагіни та кліпи

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • oneignal-cordova-plugin@2.3.3
  • @ ionic-native / device @ 4.6.0
  • @ ionic-native / screen орієнтація @ 4.6.0
  • @ ionic-native / oneignal @ 4.6.0
  • @ ionic-native / status-bar @ 4.6.0
  • @ ionic-native / splash-screen @ 4.6.0
  • @ ionic-native / core @ 4.6.0
  • @ ionic-native / social-sharing @ 4.6.0
  • @ angular / cli @ 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.