Cómo limpiar la carpeta node modules de los paquetes que no están en el paquete.json?


Supongamos que instalo paquetes de proyecto con npm install que busca en package.json los módulos que se instalarán. Después de un tiempo veo que no necesito algún módulo específico y elimino su dependencia de package.json. Luego elimino algunos otros módulos de package.json porque ya no son necesarios y otros se reemplazan con alternativas.

Ahora quiero limpiar la carpeta node_modules para que solo los módulos listados en package.json permanezcan allí y el resto deba irse, algo así como npm clean. Sé que puedo eliminarlos manualmente pero me gustaría tener un poco de funcionalidad de azúcar listo para usar para eso.

Author: Sergei Basharov, 2014-01-14

8 answers

Creo que estás buscando npm prune

npm prune [<name> [<name ...]]

Este comando elimina paquetes "extraños". Si un nombre de paquete es siempre, entonces solo los paquetes que coincidan con uno de los nombres suministrados son quitar.

Los paquetes extraños son paquetes que no están lista de dependencias del paquete padre.

Ver los documentos: https://docs.npmjs.com/cli/prune

 303
Author: David Sherret,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-01 19:53:31

Puede eliminar su carpeta node_modules/ y luego reinstalar las dependencias del paquete.json.

rm -rf node_modules/
npm install

Esto borraría todos los paquetes instalados en la carpeta actual y solo instalaría las dependencias desde el paquete.json. Si las dependencias se han instalado previamente, npm intentará usar la versión en caché, evitando descargar la dependencia por segunda vez.

 122
Author: adamduren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 19:43:45

Debido a su anidamiento de carpetas, Windows no puede eliminar la carpeta ya que su nombre es demasiado largo. Para resolver esto, instale RimRaf:

npm install rimraf -g

rimraf node_modules
 78
Author: user3844078,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-10 07:02:28

Primero instale globalmente rimraf

npm install rimraf -g

Vaya a la ruta usando cmd donde su carpeta node_modules y aplique debajo del comando

rimraf node_modules
 10
Author: Ankit Parmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-23 20:40:24

¿Has probado npm prune?

Debería desinstalar todo lo que no aparece en el archivo del paquete

Https://npmjs.org/doc/cli/npm-prune.html

 9
Author: Christoffer Bo Petersen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 19:50:52

Simple simplemente ejecute

rm -r node_modules

De hecho, puede eliminar cualquier carpeta con esto.

Como rm-r AnyFolderWhichIsNotDeletableFromshiftdeleteordelete.

Basta con abrir el gitbash mover a la raíz de la carpeta y ejecutar este comando

Espero que esto ayude.

 9
Author: Ajay Kotnala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-16 10:19:07

Para el usuario de Windows, solución alternativa para eliminar dicha carpeta que aparece aquí: http://ask.osify.com/qa/567

Entre ellos, una herramienta gratuita: Long Path Fixer es bueno probar: http://corz.org/windows/software/accessories/Long-Path-Fixer-for-Windows.php

 2
Author: Osify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-12 04:57:19

Utilice el siguiente comando en lugar de npm install

npm ci
 -1
Author: Jasmin Mistry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 09:42:20