Solución:
Nota: Reciente npm
Las versiones hacen esto automáticamente cuando los bloqueos de paquetes están habilitados, por lo que esto no es necesario excepto para eliminar paquetes de desarrollo con el --production
bandera.
Correr npm prune
para eliminar módulos que no figuran en package.json
.
Desde npm help prune
:
Este comando elimina los paquetes “extraños”. Si se proporciona un nombre de paquete, solo se eliminarán 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 el
--production
se especifica la bandera, este comando eliminará los paquetes especificados en su devDependencies.
Si no le preocupa un par de minutos para hacerlo, una solución sería rm -rf node_modules
y npm install
nuevamente para reconstruir los módulos locales.
Puedes usar npm-prune para eliminar paquetes extraños.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
Este comando elimina los paquetes “extraños”. Si se proporciona un nombre de paquete, solo se eliminarán 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 el –producción se especifica la bandera o el NODE_ENV la variable de entorno se establece en producción, este comando eliminará los paquetes especificados en su devDependencies. Configuración –Sin producción negará NODE_ENV siendo configurado en producción.
Si el – corrida en seco Si se usa la bandera, no se realizarán cambios.
Si el –json se usa la bandera, luego los cambios npm ciruela hecho (o hubiera hecho con – corrida en seco) se imprimen como un objeto JSON.
En el funcionamiento normal con los bloqueos de paquetes habilitados, los módulos extraños se podan automáticamente cuando se instalan los módulos y solo necesitará este comando con el –producción bandera.
Si ha desactivado los bloqueos de paquetes, los módulos extraños no se eliminarán y depende de usted ejecutar npm ciruela 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 [email protected]
| `-- [email protected]
`-- d <-- depends on [email protected]~1.0.9
`-- [email protected]
En este caso, npm-dedupe transformará el árbol a:
a
+-- b
+-- d
`-- [email protected]
Debido a la naturaleza jerárquica de la búsqueda del módulo del nodo, b y d obtendrán su dependencia cumplida por el paquete c único 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 deduplicado.