npm install vs update – qual è la differenza?

Qual è la differenza pratica tra npm install npm update e npm update ? Quando dovrei usare quale?

La differenza tra l’installazione di npm e la gestione degli aggiornamenti di npm delle versioni del pacchetto specificate in 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 } } 

Riepilogo : l’unica grande differenza è che un modulo già installato con versioni fuzzy

  • viene ignorato dall’installazione di npm install
  • viene aggiornato npm update

Inoltre : install e update per impostazione predefinita gestire devDependencies in modo diverso

  • npm install / aggiornerà devDependencies a meno che non venga aggiunto il flag di produzione
  • npm update ignorerà devDependencies a meno che non venga aggiunto il flag --dev

Perché usare npm install ?

Perché npm install fa più quando si guarda oltre a gestire le proprie dipendenze in package.json . Come puoi vedere nell’installazione di npm puoi …

  • installa manualmente i moduli-nodo
  • npm install -g come globali (che li mette nel PATH della shell) usando npm install -g
  • installa alcune versioni descritte dai tag git
  • installa da un URL git
  • forzare una reinstallazione con --force

L’installazione di npm installa tutti i moduli elencati nel file package.json e le loro dipendenze.

aggiornamento npm aggiorna tutti i pacchetti nella directory node_modules e le loro dipendenze.

npm install express installa solo il modulo express e le sue dipendenze.

npm update express express express module (a partire da [email protected], non aggiorna le sue dipendenze).

Quindi gli aggiornamenti sono per quando hai già il modulo e desideri ottenere la nuova versione.

Nella maggior parte dei casi, questo installerà l’ultima versione del modulo pubblicata su npm.

 npm install express --save 

o meglio per aggiornare il modulo all’ultima versione:

 npm install [email protected] --save --force 

--save : il pacchetto apparirà nelle dipendenze.

Maggiori informazioni: npm-install

Molte distinzioni sono già state menzionate. Eccone un’altra:

L’esecuzione npm install nella parte superiore della directory di origine eseguirà vari script: prepublish , preinstall , install , postinstall . A seconda di ciò che fanno questi script, npm install può fare molto più lavoro rispetto all’installazione delle dipendenze.

Ho appena avuto un caso d’uso in cui prepublish chiamava make e il Makefile stato progettato per recuperare le dipendenze se il package.json . package.json stato aggiornato. Chiamare npm install all’interno del Makefile avrebbe portato ad una ricorsione infinita, mentre l’ npm update funzionava bene, installando tutte le dipendenze in modo che la compilazione potesse procedere anche se make veniva chiamato direttamente.