Comando npm para desinstalar o eliminar paquetes no utilizados en Node.js
¿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.
Nota : Las versiones recientes npm
hacen esto automáticamente cuando se ejecutan npm install
si los bloqueos de paquetes están habilitados, por lo que esto no es necesario excepto para eliminar paquetes de desarrollo con la --production
bandera.
Ejecute npm prune
para 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
--production
se especifica la bandera, este comando eliminará los paquetes especificados en sus devDependencies.
Si no le preocupa tener un par de minutos para hacerlo, una solución sería reconstruir una rm -rf node_modules
y otra vez los módulos locales.npm install
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.