wake-up-neo.com

Was ist der Unterschied zwischen npm install und npm run build?

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?

36
BalajiK

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.

27
Churro

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!!

24
MKP

NPM im Jahr 2019

npm build existiert nicht mehr. Sie müssen jetzt npm run build anrufen. Mehr Infos unten.

TLDR;

npm install: Installiert Abhängigkeiten und ruft dann die install aus dem Feld package.jsonscripts auf.

npm run build: Führt das Build-Feld aus dem Feld package.jsonscripts aus.


NPM-Skriptfeld

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.


Dinge komplizieren

  • npm install stimmt nicht mit npm run install überein
  • npm install installiert package.json Abhängigkeiten und führt dann den package.jsonscripts.install.__ aus.
    • (Im Wesentlichen werden npm run install aufgerufen, nachdem Abhängigkeiten installiert wurden.
  • npm run install führt nur den package.jsonscripts.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/build
8
CTS_AE
  • npm 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.js
  • npm 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.

1
Chanoch