Was ist der Unterschied zwischen npm install
und npm run build
?
In meinem Projekt ist mir aufgefallen, dass npm manchmal bei Ausführung von npm install
fehlschlägt. Wenn npm run build
ausgeführt wird, funktioniert es jedoch einwandfrei.
Wie unterscheidet sich das Innenleben dieser beiden Ziele, nämlich install
und run build
?
npm install
installiert Abhängigkeiten für das Knotenprojekt, an dem Sie gerade arbeiten, in das Verzeichnis node_modules/
. Sie können install
in einem anderen node.js-Projekt (Modul) aufrufen, um es als Abhängigkeit für Ihr Projekt zu installieren.
npm run build
ist ein Alias für npm build
und führt nichts aus, es sei denn, Sie geben an, was "build" in Ihrer package.json-Datei ausführt. Damit können Sie alle erforderlichen Aufbau-/Vorbereitungsaufgaben für Ihr Projekt ausführen, bevor es in einem anderen Projekt verwendet wird.
build
wird von link
- und install
-Befehlen gemäß der Dokumentation zu build aufgerufen:
Dies ist der Installationsbefehl, der von npm link und npm install aufgerufen wird.
Der Hauptunterschied ist ::
npm install ist ein npm cli-Befehl, der die vordefinierte Aufgabe ausführt, d. h., wie von Churro geschrieben, zum Installieren von Abhängigkeiten, die in .__ angegeben sind. package.json
npm run _ Befehlsname oder npm run-script _ Befehlsname (ex. npm run build) ist auch ein CLI-Befehl, der vordefiniert ist, um benutzerdefinierte Skripts mit dem Namen anstelle von "Befehlsname" auszuführen. In diesem Fall ist npm run build eine Benutzerdefinierter Skriptbefehl mit dem Namen "build" und wird alles tun darin angegeben (zum Beispiel echo 'hello world' in der folgenden Beispieldatei package.json).
Zu beachtende Ponits ::
1) Eine weitere Sache, npm build
und npm run build
, sind zwei verschiedene Dinge, die npm build
so ausführt, wie sie von Churro geschrieben wurden, aber npm run build
erledigt die benutzerdefinierte Arbeit innerhalb von package.json
.
2) Und npm build
und npm run build
sind nicht identisch. Was ich damit meine, ist, dass Sie in einem benutzerdefinierten Build-Skript (npm run build
) keine Angaben machen können und erwarten, dass npm build
dasselbe tut. Versuchen Sie Folgendes in Ihrem package.json
zu überprüfen:
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build":"echo 'hello build'"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {}
}
und führen Sie npm run build
und npm build
nacheinander aus, und Sie werden den Unterschied sehen. Um mehr über Befehle zu erfahren, würde ich empfehlen, der npm-Dokumentation zu folgen.
Prost!!
npm build
existiert nicht mehr. Sie müssen jetzt npm run build
anrufen. Mehr Infos unten.
npm install
: Installiert Abhängigkeiten und ruft dann die install
aus dem Feld package.json
scripts
auf.
npm run build
: Führt das Build-Feld aus dem Feld package.json
scripts
aus.
https://docs.npmjs.com/misc/scripts
Es gibt viele Dinge, die Sie in das Feld npm package.json
scripts einfügen können. Schauen Sie sich den Dokumentationslink über den Lebenszyklus der Skripts an. Die meisten haben Vor- und Nach-Haken, mit denen Sie Skripts vor/nach der Installation ausführen, veröffentlichen, deinstallieren, testen, starten, stoppen, verkleinern, Version.
npm install
stimmt nicht mit npm run install
übereinnpm install
installiert package.json
Abhängigkeiten und führt dann den package.json
scripts.install
.__ aus.npm run install
aufgerufen, nachdem Abhängigkeiten installiert wurden.npm run install
führt nur den package.json
scripts.install
aus, installiert keine Abhängigkeiten.npm build
war früher ein gültiger Befehl (war früher derselbe wie npm run build
), ist es aber nicht mehr. Es ist jetzt ein interner Befehl. Wenn Sie es ausführen, erhalten Sie: npm WARN build npm build called with no arguments. Did you mean to npm run-script build?
Weitere Informationen finden Sie in der Dokumentation: https://docs.npmjs.com/cli/buildnpm install
installiert die Abhängigkeiten in der package.json-Konfiguration.npm run build
führt das Skript "build" aus und erstellt ein Skript, das Ihre Anwendung ausführt - etwa server.jsnpm start
führt das "start" -Skript aus, das dann "node server.js" ist.Es ist schwer zu sagen, was genau das Problem war, aber wenn Sie sich die Konfiguration Ihrer Skripte anschauen, würde ich vermuten, dass "build" eine Art Build-Tool verwendet, um Ihre Anwendung zu erstellen, während "start" davon ausgeht, dass der Build abgeschlossen wurde Die Datei ist nicht da.
Wahrscheinlich verwenden Sie Laube oder Grunzen - ich erinnere mich daran, dass eine typische Gruntanwendung diese Skripts sowie ein "sauberes" Skript zum Löschen des letzten Builds definiert hat.
Build-Tools neigen dazu, eine Datei in einem bin /, dist/oder build/Ordner zu erstellen, den das Startskript dann aufruft - z. msgstr "Knoten build/server.js". Wenn Ihr npm start
fehlschlägt, liegt es wahrscheinlich daran, dass Sie npm clean
oder ähnliches aufgerufen haben, um den neuesten Build zu löschen, sodass Ihre Anwendungsdatei nicht vorhanden ist und der Start von npm fehlschlägt.
der Quellcode von npm build - um auf die Diskussion in dieser Frage einzugehen - ist in Github für Sie, wenn Sie möchten. Wenn Sie npm build
direkt ausführen und ein "build" -Skript definiert ist, wird es mit einem Fehler beendet, in dem Sie aufgefordert werden, Ihr Buildskript als npm run-script build
aufzurufen. Es ist also nicht dasselbe wie npm run script
.
Ich bin nicht ganz sicher, was npm build
tut, aber es scheint mit Postinstall zu tun und Skripten in Abhängigkeiten zu packen. Ich gehe davon aus, dass dadurch möglicherweise sichergestellt wird, dass nach dem Herunterladen des Pakets alle für Abhängigkeiten erforderlichen CLI-Build-Scripts oder systemeigenen Bibliotheken für die jeweilige Umgebung erstellt werden. Dies ist der Grund, warum link und install dieses Skript aufrufen.