web-dev-qa-db-de.com

Wann verwenden Sie 'npm start' und wann verwenden Sie 'ng serve'?

ng serve bedient ein Angular-Projekt über einen Entwicklungsserver

npm start führt einen beliebigen Befehl aus, der im Paket "start" .__ angegeben ist. Eigenschaft seines "Scripts" -Objekts. Wenn keine "start" -Eigenschaft angegeben ist Auf dem Objekt "scripts" wird der Knoten server.js ausgeführt.

Es scheint, als würde ng serve den eingebetteten Server starten, während npm start die Knotenserver startet.

Kann jemand etwas Licht darauf werfen?

104
ishandutta2007

npm start wird ausgeführt, was Sie für den start-Befehl des scripts-Objekts in Ihrer package.json-Datei definiert haben.

Wenn es also so aussieht:

"scripts": {
  "start": "ng serve"
}

Dann wird npm startng serve ausgeführt.

140
Puigcerber

Für ein Projekt, das die CLI verwendet, verwenden Sie normalerweise ng serv. In anderen Fällen können Sie npm start verwenden. Hier die ausführliche Erklärung:

ng dienen

Wird ein Projekt bedienen, das ist 'Angular CLI aware', d. H. Ein Projekt, das mit der Angular CLI erstellt wurde, insbesondere mit:

ng new app-name

Wenn Sie also ein Projekt mit der CLI erstellt haben, möchten Sie wahrscheinlich ng serv verwenden

npm starten

Dies kann im Falle eines Projekts verwendet werden, das nicht Angular CLI unterstützt (oder es kann einfach dazu verwendet werden, 'ng serv' für ein Projekt auszuführen, das Angular CLI kennt.)

Wie in den anderen Antworten angegeben, ist dies ein npm-Befehl, der die npm-Befehle von package.json mit dem Bezeichner 'start' ausführt und nicht nur 'ng serv' ausführen muss. Es ist möglich, in der package.json so etwas wie das Folgende zu haben:

   "scripts": {
     "build:watch": "tsc -p src/ -w",
     "serve": "lite-server -c=bs-config.json",
     "start": "concurrently \"npm run build:watch\" \"npm run serve\""
     ...
   },
   "devDependencies": {
     "concurrently": "^3.2.0",
     "lite-server": "^2.2.2",

In diesem Fall führt 'npm start' dazu, dass die folgenden Befehle ausgeführt werden:

concurrently "npm run build:watch" "npm run serve"

Dadurch wird der TypeScript-Compiler gleichzeitig ausgeführt (auf Codeänderungen überwacht) und der Node-Lite-Server (welche BrowserSync-Benutzer) ausgeführt.

19
Chris Halcrow

Aus dem Dokument

npm-start :

Dadurch wird ein beliebiger Befehl ausgeführt, der in der Eigenschaft "start" des Pakets des Objekts "scripts" angegeben ist. Wenn keine "start" -Eigenschaft für das "scripts" -Objekt angegeben ist, wird der Knoten server.js ausgeführt.

dies bedeutet, dass die Startskripte in package.json aufgerufen werden

"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite --baseDir ./app --port 8001\" ",
"lite": "lite-server",
 ...
}

ng dienen :

Bereitgestellt von angle/angle-cli zum Starten von angle2-Apps, die von angle-cli erstellt werden. Bei der Installation von angle-cli wird ng.cmd unter C:\Users\name\AppData\Roaming\npm (für Windows) erstellt und "%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %* ausgeführt.

Mit npm start können Sie also Ihre eigene Ausführung machen, wobei ng serve nur für angle-cli ist

Siehe auch: Was passiert, wenn Sie ng dienen?

9
vels4j

Sie sollten ng serve verwenden, daher ist npm start ein Skript, das dasselbe ausführt 

0
Heshan

Es gibt mehr als das. Die ausgeführten ausführbaren Dateien sind unterschiedlich.

npm run start

führt die lokale ausführbare Datei Ihres Projekts aus, die sich in Ihrem node_modules/.bin befindet.

ng serve

führt eine andere ausführbare Datei aus, die global ist.

Wenn Sie ein Angular -Projekt klonen und installieren, das mit Angular-Cli Version 5 erstellt wurde und dessen globale Cli-Version 7 ist, treten möglicherweise Probleme mit der Erstellung auf.

0
yusuf tezel