¿Cuál es la diferencia práctica entre npm instally 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 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>--force
~1.3?npm install --save somePackageguardar el * en dependencias?postinstallejecutan en la instalación, pero no en la actualización.installyupdatefunciona 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 decir1.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 [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 installonpm update? O, en otras palabras, ahora estoy usandonpm instally 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, mientrasinstallse 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.
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 --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, anpm installpuede hacer mucho más trabajo que simplemente instalar dependencias.Acabo de tener un caso de uso donde
prepublishllamaríamakeyMakefilefue diseñado para buscar dependencias sipackage.jsonse actualiza. Llamarnpm installdesde dentroMakefilehabría llevado a una recursión infinita, mientras que las llamadasnpm updatefuncionaron bien, instalando todas las dependencias para que la compilación pudiera continuar incluso simakese llamó directamente.fuente
redismódulo yother_modulerequiere una versión anterior deredis,npm install other_modulegarantizará queother_moduleusará la versión anterior. Se puede agregarother_module/node_modules/redissi 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 updateomitirá una gran cantidad de dependencias enpackage-lock.json. Para tener todos los paquetes necesarios disponibles ypackage-lock.jsonser correctos, siempre tengo que ejecutarlosnpm installinmediatamente despuésnpm update.