¿Hay alguna manera de hacer que npm descomprima todos los módulos en node_modules? ¿Algo como npm rebuild que elimina todos los artefactos de construcción pero no los reconstruye?
Pensé que nunca preguntarias. He estado revisando mi directorio node_modules en git como se recomienda en mikealrogers.com/posts/nodemodules-in-git.html . Cuando agrego un nuevo módulo o actualizo uno actual, termino con artefactos de compilación en git que no deberían estar allí y tengo que limpiarlos. Estaba pensando que si pudiera limpiarlos primero, el proceso sería un poco más fácil.
Dave Causey
1
Una nota rápida: ahora que NPM admite shrinkwrap(consulte npmjs.org/doc/shrinkwrap.html ), puede bloquear las versiones de TODAS sus dependencias (en lugar de solo las de nivel superior).
Michelle Tilley
2
No tener esta característica también es una mierda para el desarrollo multiplataforma. Desarrollamos en Mac y ejecutamos CI en Linux, y necesitamos eliminar el directorio node_modules y volver a instalarlo cada vez que hacemos una compilación en Linux, lo que desperdicia un montón de tiempo.
JBCP
44
@JBCP lo estás haciendo mal. Lo que debería hacer es instalar módulos en packages.json(usando npm --save) y poner el node_modulesdirectorio en .gitignore(si usa git ). CI no debe extraer sus node_modules, sino ejecutarlos npm install. Finalmente, si la descarga del registro npm toma demasiado tiempo, use algo como sinopia para almacenarlo en caché.
Bojan Markovic
1
@BojanMarkovic - Tienes razón, así es como se configuran nuestros proyectos ahora. Mi comentario anterior fue de hace aproximadamente un año. Hay (fueron) algunos proyectos que recomendaron comprometer node_modules en Git, pero eso definitivamente no es correcto.
JBCP
Respuestas:
160
Simplemente puede eliminar el directorio node_module
Esto eliminaría la fuente de node_modules, así como la salida compilada, por lo que no responde la pregunta.
theGecko
Si ha vinculado con dependencias enlace NPM que bien podría eliminar estos módulos fuente en ella del directorio de origen que puede ser bastante doloroso ...
cschuff
12
He añadido esto a mi package.json: "clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",. Parece funcionar bien.
Lucas
55
Para windows> rd node_modules / s
Ishara Samantha
2
@Lucas deberías publicar esto y una respuesta ya que es la más adecuada
Joseph
57
Agregué esto a mi package.json:
"build":"npm build","clean":"rm -rf node_modules","reinstall":"npm run clean && npm install","rebuild":"npm run clean && npm install && npm run build",
Me resulta muy extraño que una funcionalidad tan básica, que en realidad es recomendada por npm, requiera un truco para lograrlo. ¿Qué hacen todos los demás? ¿Ignorar la recomendación y usar npm install?
VitalyB
5
En una palabra no .
En dos, todavía no .
Sin embargo, hay un problema abierto para que una --no-buildbandera npm installrealice una instalación sin construir, que podría usarse para hacer lo que está pidiendo.
shrinkwrap
(consulte npmjs.org/doc/shrinkwrap.html ), puede bloquear las versiones de TODAS sus dependencias (en lugar de solo las de nivel superior).packages.json
(usandonpm --save
) y poner elnode_modules
directorio en.gitignore
(si usa git ). CI no debe extraer sus node_modules, sino ejecutarlosnpm install
. Finalmente, si la descarga del registro npm toma demasiado tiempo, use algo como sinopia para almacenarlo en caché.Respuestas:
Simplemente puede eliminar el directorio node_module
fuente
package.json
:"clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",
. Parece funcionar bien.Agregué esto a mi package.json:
Parece funcionar bien.
fuente
clean
tiene que ser definido en el paquete.json!Puede aprovechar el comando 'npm cache' que descarga el paquete tarball y lo descomprime en el directorio npm cache.
La fuente se puede copiar en.
Utilizando ideas obtenidas de https://groups.google.com/forum/?fromgroups=#!topic/npm-/mwLuZZkHkfU se me ocurrió el siguiente script de nodo. Sin garantías, YMMV, etcétera.
fuente
npm install
?En una palabra no .
En dos, todavía no .
Sin embargo, hay un problema abierto para que una
--no-build
banderanpm install
realice una instalación sin construir, que podría usarse para hacer lo que está pidiendo.Ver este tema abierto .
fuente
Prueba https://github.com/voidcosmos/npkill
encontrará todos los node_modules y le permitirá eliminarlos.
fuente
Para el entorno de Windows:
fuente
He agregado algunas líneas dentro de package.json:
Si
clean
solo quieres, puedes usar estorimraf node_modules
.fuente
En realidad hay un comando especial para este trabajo
Eliminará el
node_modules
directorio e instalará paquetes con respecto a supackage-lock.json
archivoMás información: https://docs.npmjs.com/cli/ci.html
fuente