Elimine automáticamente las dependencias de package.json al usar la desinstalación de npm

84

Después npm initpuedo agregar dependencias en mi package.json usando esto:

npm install package --save

Y digo, quiero uninstallel paquete y lo hago haciendo:

npm uninstall package

pero también quiero que mi package.json se actualice en consecuencia sin que tenga que ir manualmente al archivo y eliminar esa línea.

De los documentos de npm dice:

Es estrictamente aditivo, por lo que no elimina opciones de su package.json sin una buena razón para hacerlo.

Entonces, solo quería saber si esto es posible.

grito
fuente
Dado que mis dependencias se agregan automáticamente en package.json cada vez que instalo con la marca (--save), me preguntaba si hay una manera de eliminar las dependencias de package.json cada vez que desinstalo el paquete también.
chillido

Respuestas:

150

Usa la misma --savebandera. Si instaló una dependencia con:

$> npm install grunt-cli --save

puede desinstalarlo, con package.json actualizándose, usando:

$> npm uninstall grunt-cli --save

El indicador 'guardar' le dice a npm que actualice package.json en función de la operación que acaba de hacer.

Mike 'Pomax' Kamermans
fuente
3
Estoy usando npm con ember-cli y tuve que usar en --save-devlugar de --save.
gerry3
4
si lo instaló con --save-dev, la desinstalación también es --save-dev, ya que --save guarda en la dependenciessección del archivo package.json, mientras que --save-dev guardará en la devDependenciessección
Mike ' Pomax 'Kamermans
7
He avanzado mucho desde que publiqué esta pregunta y aquí hay un pequeño consejo profesional. Puede usar npm i <package_name> -Spara agregar a su dependencieslista o npm i <package_name> -Dpara agregar a su dev-dependencies. Se aplica la misma bandera para la eliminación con npm rm <package_name> -Sonpm rm <package_name> -D
chillido
1
pero tenga en cuenta que estos son simplemente los equivalentes de los indicadores abreviados para --save y --save-dev. Consulte npm helptodas las banderas y sus equivalentes taquigráficos. (nada instalado con -S o --save y ser desinstalado usando ya sea, también, la NGP no los ve como diferentes Justo "escribir menos" para -S.)
Mike 'Pomax' Kamermans
1
Eres un santo entre los hombres.
John Von Neumann
0

En mi caso --save no borró la entrada de package.json, el comando sugerido por ionic-check Creo que si la desinstalación sale con algún error, package.json no se actualizará, en cuyo caso solo tiene una opción para cambiar manualmente package.json, esto es tedioso, pero supongo que es la única forma

ACTUALIZAR

cuando desinstala un paquete que depende de otro paquete que está activo, en cuyo caso la desinstalación puede fallar con errores / advertencias, el método seguro es a través del siguiente gráfico de dependencia, no estoy seguro de si hay alguna herramienta disponible, una herramienta útil para tales operaciones, advertencia los mensajes son bastante engañosos, aunque "debes instalar las dependencias entre pares ..." no tiene ningún sentido cuando estamos desinstalando un paquete

Naga
fuente
1
Esto no debería ser necesario: si está en la dependencieslista, uninstall --save debería eliminarlo, independientemente de si algo más depende de ello. NPM utiliza un aplanamiento de dependencias bastante inteligente, por lo que si tiene X en su lista de dependencias (explícitamente) y desinstala X --save, se eliminará. Sin embargo, recuerde que hay varias listas de dependencia, y --saveno es el mismo que --save-dev, --save-prodo --save-optional. También sí: si uninstallconduce a errores, NPM se detiene en ese error. No intenta continuar porque ya no puede garantizar la corrección.
Mike 'Pomax' Kamermans