Was ist der praktische Unterschied zwischen npm install
und npm update
? Wann soll ich welche verwenden?
Was ist der praktische Unterschied zwischen npm install
und npm update
? Wann soll ich welche verwenden?
Antworten:
Der Unterschied zwischen der npm-Installation und der npm-Update- Behandlung der in package.json angegebenen Paketversionen :
{
"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
}
}
Zusammenfassung : Der einzige große Unterschied besteht darin, dass ein bereits installiertes Modul mit Fuzzy-Versionierung ...
npm install
npm update
Zusätzlich : install
und update
behandeln devDependencies standardmäßig anders
npm install
wird installiere / aktualisiere devDependencies es sei denn --production
Flag hinzugefügt wirdnpm update
wird ignoriert devDependencies es sei denn , --dev
Flagge hinzugefügt wirdWarum npm install
überhaupt verwenden?
Denn npm install
macht mehr, wenn Sie neben dem Umgang mit Ihren Abhängigkeiten in suchen package.json
. Wie Sie in npm install sehen können , können Sie ...
PATH
) mitnpm install -g <name>
--force
npm install --save somePackage
das * in Abhängigkeiten zu speichern?
postinstall
bei der Installation ausgeführt werden, aber nicht beim Update.
install
und update
arbeiten Sie anders mit Git-URLs, Git-Tags usw., die im angegeben sind package.json
, wäre es großartig, diese Fälle dem Beispiel hinzuzufügen.
1.3.0 -> 1.3.1
dies ist ähnlich wie ^1.3.0
bei der ^
Update-Hauptversion, dh 1.3.0 -> 1.4.0
.
npm install installiert alle Module, die in der package.json
Datei aufgeführt sind, und ihre Abhängigkeiten.
npm update aktualisiert alle Pakete im node_modules
Verzeichnis und ihre Abhängigkeiten.
npm install express installiert nur das Express-Modul und seine Abhängigkeiten.
npm update express aktualisiert das Express-Modul (beginnend mit npm@2.x werden die Abhängigkeiten nicht aktualisiert).
Updates sind also für den Fall gedacht, dass Sie das Modul bereits haben und die neue Version erhalten möchten.
npm install
oder npm update
? Oder mit anderen Worten, ich verwende jetzt npm install
und es scheint auch die Aktualisierung durchzuführen. Gibt es einen Grund, warum ich jemals verwenden sollte npm update
?
update
wird aktualisiert , immer auf die neueste Version, unabhängig von package.json, während install
die Version in package.json gegeben respektieren?
update
Installiert (oder aktualisiert) die neueste Version des Moduls. install
Installiert die neueste Version des Moduls, wenn es nicht angezeigt wird. Andernfalls wird die aktuelle Version beibehalten.
npm update
wird basierend auf Ihrer package.json auf die neueste Version aktualisiert, unabhängig davon. Wenn Sie "express": "3.x" haben und sich in Version 3.1.0 befinden, wird es auf das neueste 3.x-Tag aktualisiert. Wenn es eine 4.x-Version gibt, wird nicht die neueste Version installiert.
In den meisten Fällen wird dadurch die neueste Version des auf npm veröffentlichten Moduls installiert.
npm install express --save
oder besser, um das Modul auf die neueste Version zu aktualisieren:
npm install express@latest --save --force
--save
: Paket wird in Ihren Abhängigkeiten angezeigt.
Weitere Infos: npm-install
npm install express@latest --save --force
war genau das, was ich wollte.
Viele Unterschiede wurden bereits erwähnt. Hier ist noch einer:
Laufen npm install
an der Spitze Ihres Quellverzeichnis werden verschiedene Skripte ausgeführt: prepublish
, preinstall
, install
, postinstall
. Je nachdem, was diese Skripte tun, npm install
kann a erheblich mehr Arbeit leisten als nur Abhängigkeiten zu installieren.
Ich hatte gerade einen Anwendungsfall, in dem prepublish
aufgerufen wurde, make
und der Makefile
wurde entwickelt, um Abhängigkeiten abzurufen, wenn der package.json
aktualisiert wurde. Das Aufrufen npm install
von innerhalb des Makefile
hätte zu einer unendlichen Rekursion geführt, während das Aufrufen einwandfrei npm update
funktioniert und alle Abhängigkeiten installiert hat, sodass der Build auch dann fortgesetzt werden kann, wenn make
er direkt aufgerufen wird.
redis
Modul aktualisiert haben und other_module
eine ältere Version von benötigen redis
, npm install other_module
garantiert wird, dass other_module
die ältere Version verwendet wird. Es kann other_module/node_modules/redis
bei Bedarf hinzugefügt werden.
npm update
: Installation und Aktualisierung mit den neuesten Knotenmodulen in package.json
npm install
: Installieren Sie Knotenmodule, die in package.json definiert sind (ohne Update).
npm update
Eine große Anzahl von Abhängigkeiten in wird weggelassen package-lock.json
. Um alle erforderlichen Pakete zur Verfügung zu haben und package-lock.json
korrekt zu sein, muss ich immer npm install
direkt danach ausführen npm update
.
~1.3
?