Eliminando complementos de cordova del proyecto

103

De alguna manera, en mi aplicación, muchos de los complementos de cordova están instalados y por eso requiere acceso a casi todo, desde mis contactos hasta la ubicación actual (aunque esta aplicación no lo necesita).

Esta aplicación se compila a través de jenkins y, según tengo entendido, una solución es eliminar todos los complementos con un solo comando, por lo que será como:

cordova plugin rm org.apache.cordova.battery-status
cordova plugin rm org.apache.cordova.camera
cordova plugin rm org.apache.cordova.contacts
cordova plugin rm org.apache.cordova.geolocation
cordova plugin rm org.apache.cordova.media
cordova plugin rm org.apache.cordova.media-capture
cordova plugin rm org.apache.cordova.splashscreen
cordova plugin rm org.apache.cordova.vibration

Pero a veces muestra algunos errores y con jenkins cualquier error termina con una falla de compilación, entonces, ¿hay algún comando que elimine todos los complementos? (durante la instalación, los complementos básicos que requieren que cualquier aplicación funcione se agregan automáticamente a través de cordova, por lo que estaba buscando algunos cordova plugin rm -allpero no pude encontrarlos)

mmmm
fuente
1
Y recomendaría la construcción de un script de shell que llame a cordovaplugin list y luego haga el complemento cordova rm para cada línea devuelta
QuickFix
Solo puedo hacer algo así a través de Makefile. Y tampoco soy tan bueno con la línea de comandos de Unix.
mmmm
puede intentar completar una solicitud en el proyecto cordova para pedirles que agreguen un comando para eliminar todos los complementos ...
QuickFix
sí, bueno, no tengo tanto tiempo para esperar hasta que agreguen un nuevo comando solo para mí ..
mmmm

Respuestas:

246

Primero, debe enumerar sus complementos:

cordova plugin list

Con este resultado, simplemente puede hacer:

cordova plugin remove <PLUGIN_NAME>

Por ejemplo:

cordova plugin remove org.apache.cordova.media

Espero eso ayude.

ruhanbidart
fuente
Por alguna razón, mi proyecto VS2013 no enumera ninguno y la eliminación no funciona. Se ha ido a la edición antigua de config.xml y se elimina la carpeta de complementos ...
Anthony Horne
8
El tipo pidió un comando para eliminar todos a la vez. Esta es una respuesta simple documentada para eliminar solo uno a la vez.
Imón
8
mejor hacerlo cordova plugin remove <PLUGIN_NAME> --savepara que se elimine automáticamente de config.xml
kamayd
19

También puede hacerlo con bash (después de cambiar al directorio de su proyecto Cordova):

for i in `cordova plugin ls | grep '^[^ ]*' -o`; do cordova plugin rm $i; done
JVE999
fuente
¿Lo probaste?
Hamid Araghi
11

Podrías usar: cordova plugins list | awk '{print $1}' | xargs cordova plugins rm

y utilícelo cordova plugins listpara verificar si se han eliminado todos los complementos.

Hamid Tavakoli
fuente
No funcionó. Obtiene el siguiente error:Error: Plugin "{}" is not present in the project. See `cordova plugin list`
tfmontague
1
@tfmontague intente hacerlo manualmente cordova plugins lsy luego vea si puede eliminar los complementos uno por uno usando cordova plugins rm plugin_name. Por el error, parece que uno de los complementos no está físicamente presente en su proyecto. Con este método puedes encontrar ese complemento.
Hamid Tavakoli
10

La versión 2.0.0 de cordova-check-plugins le permite eliminar todos los complementos de un proyecto:

$ npm install -g cordova-check-plugins
$ cordova-check-plugins --remove-all

Intentará usar la CLI de Cordova para eliminar cada complemento, pero si esto falla, forzará la eliminación del complemento de platforms/y plugins/.

Si también desea eliminar de config.xml, use:

$ cordova-check-plugins --remove-all --save

Descargo de responsabilidad: soy el autor de cordova-check-plugins

DaveAlden
fuente
$ cordova-check-plugins --remove-all --save Eliminando todos los complementos ... -FATAL ERROR: No se pudo encontrar el comando CLI local / global de cordova o global phonegap al enumerar los complementos instalados - asegúrese de tener el módulo cordova npm instalado localmente en la carpeta de su proyecto o globalmente. Error: El comando falló: phonegap -v 'phonegap' no se reconoce como un comando interno o externo, programa operable o archivo por lotes.
Naga
@Naga, necesita que cordova o phonegap estén instalados en su directorio npm global que se especifica mediante la variable de configuración npm del prefijo predeterminado o lo que sea que establezca en sus archivos .npmrc / npmrc. Lo más probable es que el suyo esté en C:\Users\yourusername\AppData\Roaming\npmsi está ejecutando en Windows o /usr/localen el kernel de UNIX. Puede averiguar cuál es su prefijo escribiendo terminal / comandonpm config get prefix
NoodleOfDeath
9

Desde la terminal (osx) suelo usar

cordova plugin -l | xargs cordova plugins rm

Pipe, pipe todo!

Para expandir un poco: este comando recorrerá los resultados de cordova plugin -ly lo enviará a cordova plugins rm.

xargs es uno de esos comandos que te preguntas por qué no conocías antes. Mira este tut.

Kuzyn
fuente
1
A partir de cordova 9.0.0 esto ya no funciona correctamente, JVE999 sí funciona.
Bala Clark
4

Lo hago con esta python one-liner:

python -c "import subprocess as sp;[sp.call('cordova plugin rm ' + p.split()[0], shell=True) for p in sp.check_output('cordova plugin', shell=True).split('\n') if p]"

Obviamente, no maneja ningún tipo de condiciones de error, pero hace el trabajo.

Matthew Purdon
fuente
Simplemente use un script de shell. Lanzar otro lenguaje de programación con sus propias dependencias en la mezcla hace que Cordova sea un lío aún mayor.
tfmontague
2

Por lo que recuerdo de Cordova, debería tener un archivo xml en la carpeta "res" que contiene la lista de complementos utilizados en su proyecto. Probablemente necesite eliminar esos complementos no utilizados de la lista. Y también debes eliminar los archivos relacionados.

Osayilgan
fuente
No tengo acceso físico a este esclavo. No se puede hacer de esta manera.
mmmm
2
cordova platform rm android

cordova plugin rm cordova-plugin-firebase

cordova platform add android
usuario9972736
fuente
1
Continúe y agregue algo de contexto o explicación a su respuesta.
Joey Phillips
1

Esta es la línea de comandos para eliminar complementos en Cordova

cordova plugin remove <pluginid>

Por ejemplo, ejecuté cordova pluginy obtuve una lista de complementos, luego usé la identificación del complemento para desinstalar

cordova plugin remove com.monday.contact-chooser

Puede obtener ayuda en la línea de comandos escribiendo

cordova help <command>

Jack Shultz
fuente
cordova plugin eliminar com.monday.contact-chooser dando error como - Error: el complemento "cordova-plugin-name" no está presente en el proyecto. Ver cordova plugin list.
S. Yadav
Elimine su publicación, la pregunta que se hizo fue "¿Hay algún comando que elimine todos los complementos"?
tfmontague
1

Es posible que los scripts basados ​​en el procesamiento de la lista de complementos instalados no funcionen ya que existen dependencias entre los complementos instalados (p. Ej., Cordova-plugin-file y cordova-plugin-file-transfer).

En el ejemplo, la secuencia de comandos encontrará primero el complemento de archivo, luego intentará eliminarlo y obtendremos un error ya que la transferencia de archivos lo requiere. Por lo tanto, tendremos

Nacho Marín
fuente
Este es un buen punto sobre las dependencias entre los complementos instalados. Creo que hay una bandera de fuerza --force, que eliminaría el complemento independientemente ...
tfmontague
0

Cuando ejecute el comando:, cordova plugin remove <PLUGIN NAME>asegúrese de no agregar el número de versión al nombre del complemento. Solo el nombre del complemento, por ejemplo:

cordova plugin remove cordova.plugin_name 

y no:

cordova plugin remove cordova.plugin_name 0.01 

o

cordova plugin remove "cordova.plugin_name 0.01"

En caso de que haya un problema de privilegios, ejecute sudo si está en un sistema * nix, por ejemplo:

sudo cordova plugin remove cordova.plugin_name

Luego, puede agregar --save para eliminarlo del archivo config.xml. Por ejemplo:

cordova plugin remove cordova.plugin_name --save
franco
fuente
0
  • acceder a la carpeta
  • enumerar los complementos (lista de complementos de cordova)
  • plugin ionic cordova eliminar "pluginName"

¡Debería estar bien!

Mekkush
fuente
0

Si la solución anterior no funcionó y obtuvo un rechazo de promesa no controlado, intente seguir los pasos:

  1. Proyecto Clean the Cordova

    Córdoba limpia

    1. Quitar plataforma

plataforma cordova eliminar android / ios

  1. Luego elimine el complemento

eliminar plugin cordova

  1. agregar plataformas y ejecutar el proyecto Funcionó para mí.
rahul.sapkal23
fuente