ng serve
sert un projet angulaire via un serveur de développement
npm start
exécute une commande arbitraire spécifiée dans le "démarrage" du package propriété de son objet "scripts". Si aucune propriété "start" n'est spécifiée sur l'objet "scripts", il exécutera le noeud server.js.
Il semble que ng serve
démarre le serveur intégré, alors que npm start
démarre les serveurs de nœuds.
Quelqu'un peut-il jeter un peu de lumière dessus?
npm start
lancera ce que vous avez défini pour la commande start
de l'objet scripts
dans votre fichier package.json
.
Donc, si cela ressemble à ceci:
"scripts": {
"start": "ng serve"
}
Alors npm start
sera exécuté ng serve
.
Pour un projet utilisant la CLI, vous utiliserez généralement ng serve. Dans d'autres cas, vous pouvez utiliser npm start. Voici l'explication détaillée:
Servira un projet qui est est 'Angular CLI aware', c’est-à-dire un projet créé à l’aide de la CLI angulaire, notamment:
ng new app-name
Donc, si vous avez échafaudé un projet à l'aide de la CLI, vous voudrez probablement utiliser ng serve
Cela peut être utilisé dans le cas d'un projet qui est pas Angular CLI conscient (ou il peut simplement être utilisé pour lancer 'ng serve' pour un projet qui est conscient de Angular CLI)
Comme l’autre réponse indique, il s’agit d’une commande npm qui exécutera la ou les commandes npm du package.json portant l’identificateur «start» et ne doit pas uniquement exécuter «ng serve». Il est possible d'avoir quelque chose comme ceci dans le package.json:
"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",
Dans ce cas, 'npm start' entraînera l'exécution des commandes suivantes:
concurrently "npm run build:watch" "npm run serve"
Ceci exécutera simultanément le compilateur TypeScript (surveillant les modifications de code) et le serveur Node lite-server (quels utilisateurs BrowserSync)
Du document
Ceci exécute une commande arbitraire spécifiée dans la propriété "start" du package de son objet "scripts". Si aucune propriété "start" n'est spécifiée sur l'objet "scripts", le noeud server.js sera exécuté.
ce qui signifie qu'il appellera les scripts de démarrage à l'intérieur du package.json
"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite --baseDir ./app --port 8001\" ",
"lite": "lite-server",
...
}
Fourni par angular/angular-cli pour lancer les applications angular2 créées par angular-cli. lorsque vous installez angular-cli, il créera ng.cmd sous C:\Users\name\AppData\Roaming\npm
(pour Windows) et exécutera "%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*
Donc, en utilisant npm start
, vous pouvez créer votre propre exécution où ng serve
est uniquement destiné à angular-cli
Voir aussi: Que se passe-t-il lorsque vous lancez un service?
Vous devez utiliser ng serve car npm start est un script qui exécute la même chose. Un moyen plus efficace consiste à appeler directement ng serve au-dessus du script inutile.
Il y a plus que ça. Les exécutables exécutés sont différents.
npm run start
exécutera l’exécutable local de vos projets qui se trouve dans votre node_modules/.bin.
ng serve
exécutera un autre exécutable qui est global.
Cela signifie que si vous clonez et installez un projet Angular créé avec angular-cli version 5 et que votre version de cli globale est 7, vous risquez alors d'avoir des problèmes avec ng build.