Comando npm para desinstalar o eliminar paquetes no utilizados en Node.js

Resuelto Tarion asked hace 10 años • 4 respuestas

¿Hay alguna manera de desinstalar simplemente todas las dependencias no utilizadas (no declaradas) de un proyecto Node.js (las que ya no están definidas en mi archivo package.json)? Cuando actualizo mi aplicación, me gusta que los paquetes no referenciados se eliminen automáticamente.

Tarion avatar Jan 29 '14 04:01 Tarion
Aceptado

Nota : Las versiones recientes npmhacen esto automáticamente cuando se ejecutan npm installsi los bloqueos de paquetes están habilitados, por lo que esto no es necesario excepto para eliminar paquetes de desarrollo con la --productionbandera.


Ejecute npm prunepara eliminar los módulos que no figuran en package.json.

De npm help prune:

Este comando elimina paquetes "extraños". Si se proporciona un nombre de paquete, solo se eliminan los paquetes que coincidan con uno de los nombres proporcionados.

Los paquetes extraños son paquetes que no figuran en la lista de dependencias del paquete principal.

Si --productionse especifica la bandera, este comando eliminará los paquetes especificados en sus devDependencies.

Darkhogg avatar Jan 28 '2014 21:01 Darkhogg

Si no le preocupa tener un par de minutos para hacerlo, una solución sería reconstruir una rm -rf node_modulesy otra vez los módulos locales.npm install

Pyrce avatar Jan 28 '2014 21:01 Pyrce

Puede utilizar npm-prune para eliminar paquetes extraños.

npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]

Este comando elimina paquetes "extraños". Si se proporciona un nombre de paquete, solo se eliminan los paquetes que coincidan con uno de los nombres proporcionados.

Los paquetes extraños son paquetes que no figuran en la lista de dependencias del paquete principal.

Si se especifica el indicador --production o la variable de entorno NODE_ENV se establece en producción , este comando eliminará los paquetes especificados en sus devDependencies . Configurar --no-production negará que NODE_ENV se establezca en producción .

Si se utiliza el indicador --dry-run, en realidad no se realizarán cambios.

Si se usa el indicador --json , los cambios que npm prune realizó (o habría realizado con --dry-run ) se imprimen como un objeto JSON.

En funcionamiento normal con bloqueos de paquetes habilitados, los módulos superfluos se eliminan automáticamente cuando se instalan los módulos y solo necesitará este comando con el indicador --production .

Si ha desactivado los bloqueos de paquetes, los módulos superfluos no se eliminarán y depende de usted ejecutar npm prune de vez en cuando para eliminarlos.

Utilice npm-dedupe para reducir la duplicación

npm dedupe
npm ddp

Busca en el árbol de paquetes local e intenta simplificar la estructura general moviendo las dependencias más arriba en el árbol, donde pueden ser compartidas de manera más efectiva por múltiples paquetes dependientes.

Por ejemplo, considere este gráfico de dependencia:

a
+-- b <-- depends on c@1.0.x
|    `-- [email protected]
`-- d <-- depends on c@~1.0.9
     `-- [email protected]

En este caso, npm-dedupe transformará el árbol en:

 a
 +-- b
 +-- d
 `-- [email protected]

Debido a la naturaleza jerárquica de la búsqueda de módulos del nodo, byd obtendrán su dependencia satisfecha mediante el único paquete c en el nivel raíz del árbol.

El algoritmo de deduplicación recorre el árbol, moviendo cada dependencia lo más arriba posible en el árbol, incluso si no se encuentran duplicados. Esto dará como resultado un árbol plano y sin duplicados.

Igor Litvinovich avatar Sep 06 '2018 08:09 Igor Litvinovich