web-dev-qa-db-fra.com

Quand utiliser 'npm start' et quand utiliser 'ng serve'?

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?

104
ishandutta2007

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.

140
Puigcerber

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:

ng servir

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

npm start

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)

19
Chris Halcrow

Du document

npm-start :

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",
 ...
}

ng servir :

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?

9
vels4j

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. 

0
Heshan

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.

0
yusuf tezel