Qual è la differenza pratica tra npm installe npm update? Quando dovrei usare quale?
Qual è la differenza pratica tra npm installe 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 installnpm updateInoltre : installe updateper impostazione predefinita gestire devDependencies in modo diverso
npm installsarà l'installazione / aggiornamento devDependencies a meno che non --productionsi aggiunge bandieranpm updatesi ignora devDependencies a meno che non --devsi aggiunge bandieraPerché usare npm installaffatto?
Perché npm installfa di più quando guardi oltre a gestire le tue dipendenze package.json. Come puoi vedere in npm install puoi ...
PATH) usandonpm install -g <name>--forcenpm install --save somePackagesalvare * per le dipendenze?
postinstalleseguono all'installazione, ma non all'aggiornamento.
installe updatefunziona diversamente su URL git, tag git, ecc. Specificati nel package.json, sarebbe bello aggiungere quei casi all'esempio.
1.3.0 -> 1.3.1Questo è 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.jsonfile e le relative dipendenze.
npm update aggiorna tutti i pacchetti nella node_modulesdirectory 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 installo npm update? O, in altre parole, ora sto usando npm installe sembra fare anche l'aggiornamento, c'è qualche motivo per cui dovrei mai usare npm update?
updateaggiornerò sempre all'ultima versione, indipendentemente da package.json, mentre installrispetterà la versione fornita in package.json?
updateinstalla (o aggiorna) l'ultima versione del modulo. installinstalla l'ultima versione del modulo se non viene presentato altrimenti mantiene la versione corrente.
npm updateeseguirà 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 --forceera esattamente quello che volevo.
Molte distinzioni sono già state menzionate. Eccone un altro:
Esecuzione npm installin cima alla vostra directory di origine eseguirà vari script: prepublish, preinstall, install, postinstall. A seconda di ciò che fanno questi script, a npm installpuò fare molto più lavoro della semplice installazione di dipendenze.
Ho appena avuto un caso d'uso in cui prepublishchiamerei makeed è Makefilestato progettato per recuperare le dipendenze se package.jsonfosse aggiornato. Chiamare npm installdall'interno Makefileavrebbe portato a una ricorsione infinita, mentre la chiamata ha npm updatefunzionato bene, installando tutte le dipendenze in modo che la build potesse procedere anche se makefosse chiamata direttamente.
redismodulo e other_modulerichiedi una versione precedente di redis, npm install other_modulegarantirai che other_moduleutilizzerà la versione precedente. Può aggiungere other_module/node_modules/redisse 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 updateometterò un gran numero di dipendenze in package-lock.json. Per avere tutti i pacchetti richiesti disponibili e package-lock.jsonper essere corretti, devo sempre eseguire npm installsubito dopo npm update.
~1.3?