¿Cuál es la diferencia práctica entre npm install
y npm update
? ¿Cuándo debo usar cuál?
520
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
~1.3
?npm install --save somePackage
guardar el * en dependencias?postinstall
ejecutan en la instalación, pero no en la actualización.install
yupdate
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 decir1.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 [email protected], no actualiza sus dependencias).
Entonces, las actualizaciones son para cuando ya tiene el módulo y desea obtener la nueva versión.
fuente
npm install
onpm update
? O, en otras palabras, ahora estoy usandonpm install
y parece hacer la actualización también, ¿hay alguna razón por la que debería usarnpm update
?update
¿siempre se actualizará a la última versión, independientemente de package.json, mientrasinstall
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.
o mejor para actualizar el módulo a la última versión utilizada:
--save
: El paquete aparecerá en sus dependencias.Más información: npm-install
fuente
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, anpm install
puede hacer mucho más trabajo que simplemente instalar dependencias.Acabo de tener un caso de uso donde
prepublish
llamaríamake
yMakefile
fue diseñado para buscar dependencias sipackage.json
se actualiza. Llamarnpm install
desde dentroMakefile
habría llevado a una recursión infinita, mientras que las llamadasnpm update
funcionaron bien, instalando todas las dependencias para que la compilación pudiera continuar incluso simake
se llamó directamente.fuente
redis
módulo yother_module
requiere una versión anterior deredis
,npm install other_module
garantizará queother_module
usará la versión anterior. Se puede agregarother_module/node_modules/redis
si es necesario.npm update
: instalar y actualizar con los últimos módulos de nodo que se encuentran en package.jsonnpm install
: instale módulos de nodo que se definen en package.json (sin actualización)fuente
npm update
omitirá una gran cantidad de dependencias enpackage-lock.json
. Para tener todos los paquetes necesarios disponibles ypackage-lock.json
ser correctos, siempre tengo que ejecutarlosnpm install
inmediatamente despuésnpm update
.