Actualice los complementos de cordova en un comando

124

Me pregunto si hay una manera más fácil de actualizar el complemento cordova.

Busqué en Google, encontré un gancho (@ año 2013), pero esto no es 100% lo que quiero.

Sé que puedo hacer esto en dos pasos: rm, luego agregar, pero estoy buscando una mejor manera (oficial) para ayudarme ¿qué complementos tienen una versión más nueva? y puedo actualizar TODOS en un solo comando. (al igual que: actualización npm)

por ejemplo:

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

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

Si no hay una forma oficial, ¿hay algún otro ayudante? ¿yo?

Santino Wang
fuente
AFAIK No lo creo
AtanuCSE
Aquí hay un script bash que hace esto stackoverflow.com/a/36378949/5966317
nick.graziano
Fui un paso más allá y en mi carpeta de proyectos de pod update
iOS se

Respuestas:

222

Me cansé de buscar actualizaciones de complementos manualmente, así que creé una herramienta para hacerlo por mí: https://github.com/dpa99c/cordova-check-plugins

Instalarlo globalmente:

$ npm install -g cordova-check-plugins

Luego ejecute desde la raíz de su proyecto Cordova. Opcionalmente, puede actualizar complementos obsoletos de forma interactiva o automática, por ejemplo

$ cordova-check-plugins --update=auto

Captura de pantalla CLI

DaveAlden
fuente
Obtuve errores al ejecutar la segunda línea: error como: plugin: cordova-plugin-statusbar fuente: npm: // cordova-plugin-statusbar versión instalada: DESCONOCIDO: revise plugins / fetch.json para ver si hay entradas huérfanas. versión remota: 2.1.1 ¿Cómo puedo resolverlo? gracias
Agnosco
@Agnosco significa que el complemento no puede determinar el número de versión local, probablemente debido a corrupción fetch.json. Sugeriría eliminar y reinstalar manualmente el complemento afectado.
DaveAlden
Eso es increíble ! Una posible mejora sería agregar la posibilidad de dar argumentos al comando durante la actualización, como para el complemento de Facebook, sería posible actualizar automáticamente y no tener este problemaError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo
44
@JeremyBelolo [email protected] agrega soporte para preservar las variables al actualizar :-)
DaveAlden
1
@ Al-Mothafar Has entendido mal el propósito de por qué npm informa las vulnerabilidades de seguridad. Como dije en el problema que abrió , las vulnerabilidades del paquete informadas por npm son irrelevantes aquí, ya que esta es una herramienta CLI diseñada para implementarse en una máquina de desarrollo local a la que solo usted tiene acceso, no en un servidor público remoto donde puedan ser explotado por hackers.
DaveAlden
61

No puedes actualizarlo. Lo que puede hacer es desinstalar el complemento cordova y agregarlo nuevamente.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save
Mohammad Nurdin
fuente
Creo que --saveno es necesario, ver cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig
52

el estado iónico está en desuso como en [email protected]

Si está usando iónico y el cli iónico, puede ejecutar:

ionic state reset

Siempre y cuando toda la información de su complemento se haya guardado en su package.json anteriormente, esto esencialmente realizará un rm / add para todos sus complementos. Solo tenga en cuenta que esto también rm / agregará sus plataformas, pero eso no debería importar.

Esto también es bueno para cuando ignora las carpetas de complementos de su repositorio y desea configurar el proyecto en otra máquina.

Obviamente, esto no responde directamente a la pregunta, pero muchas personas están usando ambos y terminarán aquí.

Matt Way
fuente
Si tiene los complementos definidos en el config.xmlarchivo, realmente puede simplemente eliminar los complementos y hacer un ciclo rm / add en las plataformas. ionic platform adddetectará los complementos que faltan y los agregará. Pero sólo los definidos enconfig.xml
A.Grandt
ionic state resetdefinitivamente elimina los complementos; ionic state restorepuede ser necesario para reinstalarlos.
emc
1
reinicio de estado iónico: se ha depreciado en ionic-v1, por lo que ya no puede usar este comando.
FrodmanG
1
El estado iónico [ERROR] se ha eliminado a partir de CLI 3.0. Recomendamos utilizar Cordova directamente para administrar complementos y plataformas de Cordova.
Anil8753
31

Encontré otra respuesta de npmjs.org

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

Básicamente está instalando la herramienta en su proyecto:

npm install -g cordova-plugin-update

cuando hayas terminado, debes ejecutar el comando

cordova-plugin-update

y le pedirá que actualice si alguna vez hay una versión más nueva de un complemento disponible

Destello
fuente
Lo intenté pero eliminó los complementos de config.xml, recién actualizado en package.json
Peter T.
27

Aquí hay un script bash que uso, funciona en 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

Esto puede ayudar si hay conflictos, según el comentario de shan . La diferencia es la adición de la --forcebandera al eliminar.

#!/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
nick.graziano
fuente
1
este es un buen truco, pero fallará para los complementos que requieren parámetros después de la instalación, como cordova-plugin-facebook4
Max
2
agregando --force puede ayudar en conflictos cordova plugin rm $ PLUGIN --force --save
Dan Jay
8

Esta es mi versión de Windows Batch para actualizar todos los complementos en un solo comando

Cómo utilizar:

Desde la línea de comandos, en la misma carpeta del proyecto, ejecute

c:\> batchNameFile

o

c:\> batchNameFile autoupdate

Donde "batchNameFile" es el nombre del archivo .BAT, con el siguiente script.

Solo para prueba (primer ejemplo) o para forzar cada actualización disponible (segundo ejemplo)

@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

Este lote solo se probó en Windows 10

Marco Scarnatto
fuente
6

Vaya al cordovadirectorio de su proyecto y luego escriba

npm outdated

npmse mostrará su outdated plugins, si lo hay plugin outdated, escriba este comando

npm update

Vista previa de consola

rktuxyn
fuente
4

npm update -f su trabajo me forma

npm update -f

actualizará todos los complementos y cli

  • [email protected]
  • [email protected]
  • [email protected]
  • @ iónico-nativo / dispositivo @ 4.6.0
  • @ iónico nativo / orientación de pantalla @ 4.6.0
  • @ ionic-native / onesignal @ 4.6.0
  • @ ionic-native / status-bar @ 4.6.0
  • @ ionic-native / splash-screen @ 4.6.0
  • @ iónico-nativo / núcleo @ 4.6.0
  • @ ionic-native / social-sharing @ 4.6.0
  • @ angular / cli @ 1.7.3
  • [email protected] agregó 322 paquetes, eliminó 256 paquetes, actualizó 91 paquetes y movió 8 paquetes en 350.86s
M Ibrahim Hayat
fuente
3

A mí también me ENCANTARÍA algo como esto: la administración de complementos con PhoneGap / Cordova CLI es muy molesta. Esta publicación de blog aquí puede ser un comienzo para algo como esto, pero no estoy muy seguro de A) cómo aprovecharlo todavía o B) qué tan bien funcionaría.

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

Mi intento inicial de ejecutar todo el script directamente en la línea de comandos del terminal creó una salida de texto con los comandos de agregar / quitar complementos ... pero en realidad no se ejecutaron, solo hicieron eco en el terminal. Me puse en contacto con el autor con la esperanza de que le expliquen un poco más.

Christopher D. Emerson
fuente
El autor del blog aquí, no tengo idea de por qué acabo de repetir los comandos, se suponía que debían ejecutarse, debe haber pegado una versión de prueba del script. De todos modos, espero que ayude a alguien ...
Amnon
2

no puede actualizar, pero escribí un archivo por lotes que elimina mis complementos y los instalo nuevamente, por lo que en este caso todos mis complementos se actualizan automáticamente, espero que esto resuelva su problema

@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
Pranay Dutta
fuente
¿Hay alguna forma de actualizar este script para eliminar los nombres de los complementos de la salida de cordova plugins?
mix3d
1

La forma más fácil sería eliminar la carpeta de complementos. Ejecute este comando: cordova prepare Pero, antes de ejecutarlo, puede verificar la versión de cada complemento que cree que funcionaría para su compilación en el sitio web del repositorio de complementos de Cordova , y luego debe modificar el archivo config.xml, manualmente. Use las zanahorias superiores, "^" en el campo de versión del archivo de lenguaje de modelado universal, "config", para indicar que desea que el complemento especificado se actualice a la última versión en el futuro (la próxima vez que ejecute el comando).

Solumyr
fuente
Heehee, zanahorias superiores, me encanta. Eso me puso una sonrisa en la cara. En realidad es singular y se llama caret (^).
AlphaBeta
0

Si instala el paquete de terceros:

npm i cordova-check-plugins

Luego puede ejecutar un comando simple de

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

Tenga en cuenta que forzar cualquier cosa siempre conlleva riesgos potenciales de cambios importantes.

Como han dicho otras respuestas, los paquetes NPM de conexión que administran estos complementos también requieren una actualización consiguiente al actualizar los complementos, por lo que ahora puede verificarlos con:

npm outdated

Y luego barrer actualizarlos con

npm update

Ahora, tentativamente, sirva su aplicación nuevamente y verifique todas las cosas que potencialmente se salieron mal de los cambios importantes. ¡La alegría del desarrollo de software! :)

Conceder
fuente
-2
cordova-check-plugins --update=auto --force

usa la línea de comando

Dhanasekaran
fuente
Esta no es una herramienta que se instala por defecto.
Dustin Simpson
-8

No necesita eliminar, solo agregue nuevamente.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Daniel Faria
fuente