Qual è la differenza pratica tra npm install
e npm update
? Quando dovrei usare quale?
Qual è la differenza pratica tra npm install
e npm update
? Quando dovrei usare quale?
Risposte:
La differenza tra npm install e npm update handling 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 versione fuzzy ...
npm install
npm update
Inoltre : install
e update
per impostazione predefinita gestire devDependencies in modo diverso
npm install
sarà l'installazione / aggiornamento devDependencies a meno che non --production
si aggiunge bandieranpm update
si ignora devDependencies a meno che non --dev
si aggiunge bandieraPerché usare npm install
affatto?
Perché npm install
fa di più quando guardi oltre a gestire le tue dipendenze package.json
. Come puoi vedere in npm install puoi ...
PATH
) usandonpm install -g <name>
--force
npm install --save somePackage
salvare * per le dipendenze?
postinstall
eseguono all'installazione, ma non all'aggiornamento.
install
e update
funziona diversamente su URL git, tag git, ecc. Specificati nel package.json
, sarebbe bello aggiungere quei casi all'esempio.
1.3.0 -> 1.3.1
Questo è simile a ^1.3.0
, dove la ^
versione principale degli aggiornamenti, cioè 1.3.0 -> 1.4.0
.
npm install installa tutti i moduli elencati nel package.json
file e le relative dipendenze.
npm update aggiorna tutti i pacchetti nella node_modules
directory e le loro dipendenze.
npm install express installa solo il modulo express e le sue dipendenze.
npm update express aggiorna il modulo express (a partire da npm@2.x, non aggiorna le sue dipendenze).
Quindi gli aggiornamenti sono per quando hai già il modulo e desideri ottenere la nuova versione.
npm install
o npm update
? O, in altre parole, ora sto usando npm install
e sembra fare anche l'aggiornamento, c'è qualche motivo per cui dovrei mai usare npm update
?
update
aggiornerò sempre all'ultima versione, indipendentemente da package.json, mentre install
rispetterà la versione fornita in package.json?
update
installa (o aggiorna) l'ultima versione del modulo. install
installa l'ultima versione del modulo se non viene presentato altrimenti mantiene la versione corrente.
npm update
eseguirà l'aggiornamento all'ultima versione basata su package.json, indipendentemente da esso. Se hai "express": "3.x" e sei nella versione 3.1.0, verrà aggiornato all'ultimo tag 3.x. Se esiste una versione 4.x, non installerà l'ultima.
Nella maggior parte dei casi, verrà installata l'ultima versione del modulo pubblicata su npm.
npm install express --save
o meglio per aggiornare il modulo all'ultima versione utilizzare:
npm install express@latest --save --force
--save
: Il pacchetto apparirà nelle tue dipendenze.
Ulteriori informazioni: npm-install
npm install express@latest --save --force
era esattamente quello che volevo.
Molte distinzioni sono già state menzionate. Eccone un altro:
Esecuzione npm install
in cima alla vostra directory di origine eseguirà vari script: prepublish
, preinstall
, install
, postinstall
. A seconda di ciò che fanno questi script, a npm install
può fare molto più lavoro della semplice installazione di dipendenze.
Ho appena avuto un caso d'uso in cui prepublish
chiamerei make
ed è Makefile
stato progettato per recuperare le dipendenze se package.json
fosse aggiornato. Chiamare npm install
dall'interno Makefile
avrebbe portato a una ricorsione infinita, mentre la chiamata ha npm update
funzionato bene, installando tutte le dipendenze in modo che la build potesse procedere anche se make
fosse chiamata direttamente.
redis
modulo e other_module
richiedi una versione precedente di redis
, npm install other_module
garantirai che other_module
utilizzerà la versione precedente. Può aggiungere other_module/node_modules/redis
se necessario.
npm update
: installa e aggiorna con i moduli nodo più recenti che si trovano in package.json
npm install
: installa i moduli del nodo che sono definiti in package.json (senza aggiornamento)
npm update
ometterò un gran numero di dipendenze in package-lock.json
. Per avere tutti i pacchetti richiesti disponibili e package-lock.json
per essere corretti, devo sempre eseguire npm install
subito dopo npm update
.
~1.3
?