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 paquet "start" propriété de son objet "scripts". Si aucun bien" démarrer " n'est spécifié sur l'objet "scripts", il exécute le serveur de noeuds.js.

il semble que ng serve démarre le serveur intégré alors que npm start démarre les serveurs de noeuds.

quelqu'un peut-il nous éclairer?

92
demandé sur Community 2016-10-22 12:34:30

3 réponses

npm start exécutera tout ce que vous avez défini pour la commande start de l'objet scripts dans votre fichier package.json .

donc si elle ressemble à ceci:

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

puis npm start sera exécuté ng serve .

121
répondu Puigcerber 2016-10-22 09:39:51

pour un projet qui utilise le 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 que est "Angular CLI aware", c.-à-d. un projet qui a été créé en utilisant L'Angular CLI, en particulier en utilisant:

ng new app-name

donc, si vous avez échafaudé un projet en utilisant le CLI, vous voudrez probablement utiliser ng servir

npm démarrer

ceci peut être utilisé dans le cas d'un projet qui est et non conscient de CLI angulaire (ou il peut simplement être utilisé pour exécuter 'ng serve' pour un projet qui est conscient de CLI angulaire)

comme l'indiquent les autres réponses, il s'agit d'une commande npm qui exécutera la(Les) commande (s) npm à partir du paquet.json qui ont l'identificateur "démarrer", et il ne peut pas exécuter 'ng servir". Il est possible d'avoir quelque chose de comme ce qui suit dans le paquet.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' donnera les commandes suivantes à exécuter:

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

cette commande exécutera simultanément le compilateur TypeScript (en surveillant les changements de code), et exécutera le noeud Lite-server (que les utilisateurs BrowserSync)

10
répondu Chris Halcrow 2018-03-25 22:29:14

du document

npm-start :

cette commande exécute une commande arbitraire spécifiée dans la propriété" start "du paquet de son objet" scripts". Si aucune propriété " start "n'est spécifiée sur l'objet" scripts", il lancera node server.js.

ce qui signifie qu'il appellera les scripts de démarrage à l'intérieur du paquet.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 démarrer angular2 apps qui a été créé par angular-cli. lorsque vous installez angular-cli, il va créer ng.cmd sous C:\Users\name\AppData\Roaming\npm (pour windows) et exécuter "%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

donc en utilisant npm start vous pouvez faire votre propre exécution où est ng serve est seulement pour angular-cli

Voir Aussi : Ce qui se passe lorsque vous exécutez ng servir?

7
répondu vels4j 2017-05-23 12:02:56