¿Cómo reinstalas las dependencias de una aplicación usando npm?

386

¿Existe una manera simple de reinstalar todos los paquetes de los que depende mi aplicación (es decir, están en la carpeta de mis módulos node_modules)?

trusktr
fuente
44
npm rebuildtambién podría ayudar con algunos problemas con las dependencias nativas
Francisco Presencia
1
En caso de que ayude a otros: si solo está intentando reinstalar un paquete, npm update <packageName>funciona muy bien
rinogo

Respuestas:

619

La forma más fácil que puedo ver es eliminar la node_modulescarpeta y ejecutarla npm install.

Vadim Baryshev
fuente
28
Convenido; suponiendo que haya creado un package.jsonarchivo para su aplicación.
JohnnyHK
99
Tenga en cuenta que la ejecución npm installdespués de eliminar el node_modulesdirectorio puede dar como resultado diferentes versiones de dependencias definidas en la extracción package.json. Si necesita versiones muy específicas de dependencias para su aplicación, tenga cuidado y mire npm shrinkwrapo revise su node_modulesdirectorio para controlar la fuente.
smithclay
10
@smithclay He definido la versión explícita de los paquetes en el paquete package.json de mi aplicación, así que debería estar bien, ¿verdad?
trusktr
@vadim Estaba haciendo algunas pruebas sobre el comportamiento npm instally siempre reinstala las dependencias y actualiza los paquetes a las últimas versiones según lo permitido por package.json. Por lo tanto, node_modulesno es necesario eliminar carpetas a menos que piense que está dañado. ¿Hay alguna razón por la que pienses que debería eliminarse? Sin embargo, si la intención es eliminar cualquier paquete que sea extraño, entonces podría ejecutarlo en su npm prunelugar
himanshu
1
@himanshu tiene razón, npm installactualiza todos los módulos al estado package.json. Pero la pregunta es cómo reinstalar todos los paquetes . Por lo tanto, pueden estar dañados o pueden necesitar reconstruir las partes binarias después de la actualización node.js verison.
Vadim Baryshev
96

La forma correcta es ejecutar npm update. Es un comando realmente poderoso, actualiza los paquetes faltantes y también comprueba si se puede usar una versión más nueva del paquete ya instalado.

Lea la Introducción a NPM para comprender qué puede hacer con npm.

himanshu
fuente
58
Pero si no hay un paquete más nuevo, entonces esto no hará nada, ¿verdad? Estoy tratando de forzar la reinstalación incluso si el paquete ya tiene la última versión.
trusktr
2
Si no faltan paquetes, verificará si puede usar las últimas versiones de paquetes (incluidas las dependencias de los paquetes) que figuran en package.json. Entonces, en esencia, actualizará los paquetes si es posible. Pero no se reinstalará. Si desea hacerlo utilizando comandos, puede ejecutar npm uninstall <package_name>para desinstalar un paquete específico o ejecutar npm uninstallpara desinstalar todos los paquetes.
himanshu
1
Intenté hacerlo npm uninstallsin especificar un paquete, pero eso arroja un error.
trusktr
¿Tiene package.json en el directorio de la carpeta donde ejecutó esto? Si está desinstalando el paquete global, deberá agregar -g
himanshu el
1
El enlace que proporciona está muerto, ¿puede proporcionar uno nuevo? (Encontré esto pero no estoy seguro de que sea aceptable cambiarlo)
Motti
64

La mayoría de las veces uso el siguiente comando para lograr una reinstalación completa de todos los módulos de nodo (asegúrese de estar en la carpeta del proyecto).

rm -rf node_modules && npm install

También puede ejecutar npm cache cleandespués de eliminar la node_modulescarpeta para asegurarse de que no haya dependencias en caché.

0x1ad2
fuente
48

npmactualizó el comando CLI para instally agregó la --forcebandera.

npm install --force

El argumento --force(o -f) obligará npma buscar recursos remotos incluso si existe una copia local en el disco.

Ver npm install

Itsik Avidan
fuente
¡Genial, trabaja también con 'git + github.com ...'!
Toni Bünter
12

Puede usar el módulo de reinstalación que se encuentra en npm.

Después de instalarlo, puede usar el siguiente comando:

reinstall

La única diferencia con la eliminación manual de node_modulescarpetas y la creación npm installes que este comando borra automáticamente el caché de npm. Por lo tanto, puede obtener tres pasos en un solo comando.

upd: npx reinstall es una forma de ejecutar este comando sin instalar globalmente el paquete (solo para npm5 +)

Deksden
fuente
1
@ g00glen00b He editado para que ahora incluya información útil sin hipervínculos
Rob
@ g00glen00b Eso está perfectamente bien; no lo convierte en un candidato para su eliminación. Consulte esta publicación : en particular, trata las respuestas cortas con un enlace, siempre que haya información útil (es decir, el nombre de la biblioteca) cuando se elimina el hipervínculo
Rob
6

Puedes hacer esto con un simple comando:

npm ci
Joeri
fuente
¡Esta es la respuesta correcta!
Victor Calatramas
1

Para Windows puedes usar

(if exist node_modules rmdir node_modules /q /s) && npm install

que elimina el node_modulesdirectorio y realiza npm installentonces. La eliminación antes de la instalación asegura que todos los paquetes se reinstalen.

michal.jakubeczy
fuente
0

Siga este paso para reinstalar módulos de nodo y actualizarlos

funciona incluso si la carpeta node_modules no existe. ahora ejecute el siguiente comando sincrónicamente. también puedes usar "actualización npm" pero creo que esta es la forma preferida

npm outdated // not necessary to run this command, but this will show outdated dependencies

npm install -g npm-check-updates // to install the "ncu" package

ncu -u --packageFile=package.json // to update dependencies version in package.json...don't run this command if you don't need to update the version

npm install: will install dependencies in your package.json file.

si está de acuerdo con la versión de sus dependencias en su archivo package.json, no es necesario que siga esos pasos, solo ejecute

 npm install
Pedro JR
fuente