¿Cuál es la diferencia práctica entre npm instally npm update? ¿Cuándo debo usar cuál?
¿Cuál es la diferencia práctica entre npm instally 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 installnpm updateAdemás : instally updatepor defecto maneja las DevDependencies de manera diferente
npm installse instale / actualice devDependencies menos que --productionse añade la banderanpm updatese ignorar devDependencies a menos que --devse añade la bandera¿Por qué usar npm installen absoluto?
Porque npm installhace más cuando miras además de manejar tus dependencias package.json. Como puede ver en npm install , puede ...
PATH) usandonpm install -g <name>--forcenpm install --save somePackageguardar el * en dependencias?
postinstallejecutan en la instalación, pero no en la actualización.
instally updatefunciona de manera diferente en URL de git, etiquetas de git, etc., especificadas en el, package.jsonentonces sería genial agregar esos casos al ejemplo.
1.3.0 -> 1.3.1es 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.jsonarchivo y sus dependencias.
npm update actualiza todos los paquetes en el node_modulesdirectorio 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 installo npm update? O, en otras palabras, ahora estoy usando npm instally 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 installse respetará la versión dada en package.json?
updateinstala (o actualiza) la última versión del módulo. installinstala la última versión del módulo si no se presenta, de lo contrario conserva la versión actual.
npm updatese 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 --forceEra exactamente lo que quería.
Ya se han mencionado muchas distinciones. Aquí hay uno más:
Correr npm installen 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 installpuede hacer mucho más trabajo que simplemente instalar dependencias.
Acabo de tener un caso de uso donde prepublishllamaría makey Makefilefue diseñado para buscar dependencias si package.jsonse actualiza. Llamar npm installdesde dentro Makefilehabría llevado a una recursión infinita, mientras que las llamadas npm updatefuncionaron bien, instalando todas las dependencias para que la compilación pudiera continuar incluso si makese llamó directamente.
redismódulo y other_modulerequiere una versión anterior de redis, npm install other_modulegarantizará que other_moduleusará la versión anterior. Se puede agregar other_module/node_modules/redissi 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 updateomitirá una gran cantidad de dependencias en package-lock.json. Para tener todos los paquetes necesarios disponibles y package-lock.jsonser correctos, siempre tengo que ejecutarlos npm installinmediatamente después npm update.
~1.3?