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?
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 start
ng serve
ausgeführt.
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:
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
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.
Aus dem Dokument
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",
...
}
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?
Sie sollten ng serve verwenden, daher ist npm start ein Skript, das dasselbe ausführt
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.