Atualizar plugins cordova em um comando

124

Gostaria de saber se existe uma maneira mais fácil de atualizar o plugin cordova?

Pesquisei no google, encontrei um gancho (@ ano de 2013), mas isso não é 100% o que eu quero.

Eu sei que posso fazer isso por duas etapas: rm, em seguida, adicione, mas estou procurando uma maneira melhor (oficial) de me ajudar quais plugins têm a versão mais recente? e eu posso atualizar TODOS eles em um comando. (assim como: atualização npm)

por exemplo:

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

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

se não existe uma maneira oficial, existe algum outro ajudante? ei

Santino Wang
fonte
AFAIK Acho que não
#
Aqui está um script que faz isso stackoverflow.com/a/36378949/5966317
nick.graziano
Eu fui um passo adiante e na minha pasta do projeto pod update
iOS

Respostas:

222

Eu cansei de verificar manualmente as atualizações de plugins, então criei uma ferramenta para fazer isso por mim: https://github.com/dpa99c/cordova-check-plugins

Instale-o globalmente:

$ npm install -g cordova-check-plugins

Em seguida, execute a partir da raiz do seu projeto Cordova. Você pode opcionalmente atualizar plugins desatualizados de forma interativa ou automática, por exemplo

$ cordova-check-plugins --update=auto

Captura de tela da CLI

DaveAlden
fonte
Ocorreu um erro ao executar a segunda linha: erro como: plugin: cordova-plugin-statusbar fonte: npm: // cordova-plugin-statusbar versão instalada: UNKNOWN - verifique plugins / fetch.json quanto a entradas órfãs. versão remota: 2.1.1 Como posso resolvê-lo? obrigado
Agnosco
@Agnosco significa que o plugin não pode determinar o número da versão local, provavelmente por estar corrompido fetch.json. Eu sugeriria remover e reinstalar manualmente o plug-in afetado.
precisa saber é o seguinte
Isso é incrível! A melhoria possível seria adicionar a possibilidade de dar argumentos para o comando ao atualizar, como para o facebook plug-in que seria possível para atualizar automaticamente e não tem esse problemaError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo
4
@JeremyBelolo [email protected] adiciona suporte para preservar variáveis ao atualizar :-)
DaveAlden
1
@ Al-Mothafar Você entendeu errado o propósito de explicar por que as vulnerabilidades de segurança são relatadas pelo npm. Como afirmei no problema que você abriu , as vulnerabilidades do pacote relatadas pelo npm são irrelevantes aqui, pois essa é uma ferramenta CLI projetada para ser implantada em uma máquina local de desenvolvimento à qual somente você tem acesso, e não em um servidor público remoto onde eles podem ser explorado por hackers.
21419 DaveAlden
61

Você não pode atualizá-lo. O que você pode fazer é desinstalar o plug-in cordova e adicioná-lo novamente.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save
Mohammad Nurdin
fonte
Eu acho que --savenão é necessário, consulte cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig 06/11/19
52

estado iônico está obsoleto como em [email protected]

Se você estiver usando ionic e o ionic cli, poderá executar:

ionic state reset

Desde que todas as informações do seu plug-in tenham sido salvas no seu package.json anteriormente, isso basicamente executará uma rm / add para todos os seus plug-ins. Apenas observe que isso também rm / adicionará suas plataformas, mas isso não deve importar.

Isso também é bom para quando você ignora as pastas de plug-in do seu repositório e deseja configurar o projeto em outra máquina.

Obviamente, isso não responde diretamente à pergunta, mas muitas pessoas estão usando as duas e acabarão aqui.

Matt Way
fonte
se você tiver os plugins definidos no config.xmlarquivo, poderá realmente excluí-los e fazer um ciclo rm / add nas plataformas. ionic platform addirá detectar plugins ausentes e adicioná-los. Mas apenas aqueles definidos naconfig.xml
A.Grandt
ionic state resetdefinitivamente remove plugins - ionic state restorepode ser necessário para reinstalá-los.
emc
1
redefinição do estado iônico - foi depreciado no ionic-v1, portanto, você não pode mais usar este comando.
precisa saber é o seguinte
1
O estado iônico [ERRO] foi removido a partir da CLI 3.0. Recomendamos o uso direto do Cordova para gerenciar plugins e plataformas do Cordova.
precisa saber é o seguinte
31

Encontrei outra resposta do npmjs.org

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

Basicamente, é a instalação da ferramenta no seu projeto:

npm install -g cordova-plugin-update

Quando terminar, você precisará executar o comando

cordova-plugin-update

e solicitará que você atualize se alguma versão mais recente de um plug-in estiver disponível

Instantâneo
fonte
Eu tentei, mas ele seja removido plugins de config.xml, apenas atualizados em package.json
Peter T.
27

Aqui está um script bash que eu uso, funciona no 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

Isso pode ajudar se houver conflitos, de acordo com o comentário de Shan . A diferença é a adição da --forcebandeira ao remover.

#!/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
fonte
1
este é um hack legal, mas falhará para plugins que exigem parâmetros após a instalação, como-plugin cordova-facebook4
Max
2
adicionando --force pode ajudar em conflitos cordova plugin rm $ PLUGIN --force --save
Dan Jay
8

Esta é a minha versão do Windows Batch para atualizar todos os plugins em um comando

Como usar:

Na linha de comando, na mesma pasta do projeto, execute

c:\> batchNameFile

ou

c:\> batchNameFile autoupdate

Onde "batchNameFile" é o nome do arquivo .BAT, com o script abaixo.

Apenas para teste (primeiro exemplo) ou para forçar todas as atualizações disponíveis (segundo exemplo)

@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 foi testado apenas no Windows 10

Marco Scarnatto
fonte
6

Vá para o cordovadiretório do seu projeto e escreva

npm outdated

npmserá exibido seu outdated plugins, se houver algum plugin outdated, escreva este comando

npm update

Visualização do console

rktuxyn
fonte
4

npm update -f seu trabalho me forma

npm update -f

ele atualizará todos os plugins e cli

  • [email protected]
  • [email protected]
  • [email protected]
  • @ ionic-native / device @ 4.6.0
  • @ nativo iônico / orientação da tela @ 4.6.0
  • @ ionic-native / onesignal @ 4.6.0
  • @ nativo-iônico / barra de status @ 4.6.0
  • @ nativo-iônico / tela inicial @ 4.6.0
  • @ nativo-iônico / núcleo @ 4.6.0
  • @ nativo-iônico / compartilhamento social @ 4.6.0
  • @ angular / cli @ 1.7.3
  • [email protected] adicionou 322 pacotes, removeu 256 pacotes, atualizou 91 pacotes e moveu 8 pacotes em 350,86s
M Ibrahim Hayat
fonte
3

Eu também adoraria algo assim - o gerenciamento de plugins com a CLI PhoneGap / Cordova é tão irritante. Este post aqui pode ser o começo de algo assim - mas não tenho muita certeza A) como aproveitá-lo ainda ou B) quão bem ele funcionaria.

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

Minha tentativa inicial de executar o script inteiro diretamente na linha de comando do terminal criou uma saída de texto com comandos de adicionar / remover plugins ... mas na verdade eles não executaram, apenas ecoaram no terminal. Entrei em contato com o autor esperando que eles expliquem um pouco mais.

Christopher D. Emerson
fonte
autor do blog aqui - não tenho idéia do motivo pelo qual ecoei os comandos - eles deveriam ser executados - devem ter colado uma versão de teste do script. De qualquer forma, espero que ajude alguém ...
Amnon
2

você não pode atualizar, mas escrevi um arquivo em lotes que remove meus plug-ins e instala novamente. Nesse caso, todos os meus plug-ins são atualizados automaticamente. Espero que isso resolva o seu 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
fonte
alguma maneira de atualizar esse script para retirar os nomes dos plugins da saída de cordova plugins?
mix3d 17/03/2019
1

A maneira mais fácil seria excluir a pasta de plugins. Execute este comando: cordova prepare Mas, antes de executá-lo, você pode verificar a versão de cada plug-in que você acha que funcionaria para a sua compilação no site de repositório de plug-ins do Cordova e, em seguida, modificar o arquivo config.xml manualmente. Use cenouras superiores, "^" no campo da versão do arquivo da linguagem de modelagem universal, "config", para indicar que você deseja que o plug-in especificado seja atualizado para a versão mais recente no futuro (na próxima vez em que executar o comando).

Solumyr
fonte
Heehee, cenouras superiores, adoro. Isso colocou um sorriso no meu rosto. Na verdade, é singular e chamado de sinal de intercalação (^).
AlphaBeta 11/07/19
0

Se você instalar o pacote de terceiros:

npm i cordova-check-plugins

Você pode executar um comando simples de

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

Lembre-se de forçar qualquer coisa sempre com riscos potenciais de interromper as alterações.

Como outras respostas indicaram, os pacotes NPM de conexão que gerenciam esses plug-ins também exigem uma atualização conseqüente ao atualizar os plug-ins, então agora você pode verificá-los com:

npm outdated

E depois varrendo atualize-os com

npm update

Agora experimente servir o aplicativo novamente e verifique todas as coisas que potencialmente deram errado ao quebrar as alterações. A alegria do desenvolvimento de software! :)

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

use a linha de comando

Dhanasekaran
fonte
Esta não é uma ferramenta instalada por padrão.
Dustin Simpson
-8

Você não precisa remover, basta adicionar novamente.

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