¿Cuál es la diferencia práctica entre npm install
y npm update
? ¿Cuándo debo usar cuál?
¿Cuál es la diferencia práctica entre npm install
y npm update
? ¿Cuándo debo usar cuál?
Respuestas:
La diferencia entre la instalación de npm y el manejo de actualizaciones de npm de las versiones de paquete especificadas en package.json :
{
"name": "my-project",
"version": "1.0", // install update
"dependencies": { // ------------------
"already-installed-versionless-module": "*", // ignores "1.0" -> "1.1"
"already-installed-semver-module": "^1.4.3" // ignores "1.4.3" -> "1.5.2"
"already-installed-versioned-module": "3.4.1" // ignores ignores
"not-yet-installed-versionless-module": "*", // installs installs
"not-yet-installed-semver-module": "^4.2.1" // installs installs
"not-yet-installed-versioned-module": "2.7.8" // installs installs
}
}
Resumen : La única gran diferencia es que un módulo ya instalado con versiones difusas ...
npm install
npm update
Además : install
y update
por defecto maneja las DevDependencies de manera diferente
npm install
se instale / actualice devDependencies menos que --production
se añade la banderanpm update
se ignorar devDependencies a menos que --dev
se añade la bandera¿Por qué usar npm install
en absoluto?
Porque npm install
hace más cuando miras además de manejar tus dependencias package.json
. Como puede ver en npm install , puede ...
PATH
) usandonpm install -g <name>
--force
npm install --save somePackage
guardar el * en dependencias?
postinstall
ejecutan en la instalación, pero no en la actualización.
install
y update
funciona de manera diferente en URL de git, etiquetas de git, etc., especificadas en el, package.json
entonces sería genial agregar esos casos al ejemplo.
1.3.0 -> 1.3.1
es similar a ^1.3.0
, donde las ^
actualizaciones son la versión principal, es decir 1.3.0 -> 1.4.0
.
npm install instala todos los módulos que figuran en el package.json
archivo y sus dependencias.
npm update actualiza todos los paquetes en el node_modules
directorio y sus dependencias.
npm install express instala solo el módulo express y sus dependencias.
npm update express actualiza el módulo express (comenzando con npm@2.x, no actualiza sus dependencias).
Entonces, las actualizaciones son para cuando ya tiene el módulo y desea obtener la nueva versión.
npm install
o npm update
? O, en otras palabras, ahora estoy usando npm install
y parece hacer la actualización también, ¿hay alguna razón por la que debería usar npm update
?
update
¿siempre se actualizará a la última versión, independientemente de package.json, mientras install
se respetará la versión dada en package.json?
update
instala (o actualiza) la última versión del módulo. install
instala la última versión del módulo si no se presenta, de lo contrario conserva la versión actual.
npm update
se actualizará a la última versión basada en su package.json, no sin importarlo. Si tiene "express": "3.x" y está en la versión 3.1.0, se actualizará a la última etiqueta 3.x. Si hay una versión 4.x, no instalará la última.
En la mayoría de los casos, esto instalará la última versión del módulo publicada en npm.
npm install express --save
o mejor para actualizar el módulo a la última versión utilizada:
npm install express@latest --save --force
--save
: El paquete aparecerá en sus dependencias.
Más información: npm-install
npm install express@latest --save --force
Era exactamente lo que quería.
Ya se han mencionado muchas distinciones. Aquí hay uno más:
Correr npm install
en la parte superior de su directorio de origen se ejecutará varios guiones: prepublish
, preinstall
, install
, postinstall
. Dependiendo de lo que hagan estos scripts, a npm install
puede hacer mucho más trabajo que simplemente instalar dependencias.
Acabo de tener un caso de uso donde prepublish
llamaría make
y Makefile
fue diseñado para buscar dependencias si package.json
se actualiza. Llamar npm install
desde dentro Makefile
habría llevado a una recursión infinita, mientras que las llamadas npm update
funcionaron bien, instalando todas las dependencias para que la compilación pudiera continuar incluso si make
se llamó directamente.
redis
módulo y other_module
requiere una versión anterior de redis
, npm install other_module
garantizará que other_module
usará la versión anterior. Se puede agregar other_module/node_modules/redis
si es necesario.
npm update
: instalar y actualizar con los últimos módulos de nodo que se encuentran en package.json
npm install
: instale módulos de nodo que se definen en package.json (sin actualización)
npm update
omitirá una gran cantidad de dependencias en package-lock.json
. Para tener todos los paquetes necesarios disponibles y package-lock.json
ser correctos, siempre tengo que ejecutarlos npm install
inmediatamente después npm update
.
~1.3
?