Подтвердить что ты не робот

Когда использовать "npm start" и когда использовать "ng serve"?

ng serve служит для проекта Angular через сервер разработки

 

npm start запускает произвольную команду, указанную в пакете "start" свойство его "скриптов" объекта. Если не указано свойство "start" на объекте "scripts" он запустит node server.js.

Кажется, что ng serve запускает встроенный сервер, тогда как npm start запускает серверы node.

Может кто-то проливает свет на него?

4b9b3361

Ответ 1

npm start выполнит все, что вы определили для команды start объекта scripts в вашем файле package.json.

Итак, если это выглядит так:

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

Затем npm start будет запускать ng serve.

Ответ 2

Для проекта, который использует CLI, вы обычно будете использовать ng serve. В других случаях вы можете использовать npm start. Вот подробное объяснение:

нг служить

Будет обслуживать проект, ориентированный на Angular CLI, то есть проект, созданный с использованием Angular CLI, особенно с использованием:

ng new app-name

Итак, если вы создали проект с использованием CLI, вы, вероятно, захотите использовать ng serve

начало вечера

Это можно использовать в случае проекта, который не поддерживает Angular CLI (или его можно просто использовать для запуска "ng serve" для проекта, который знает Angular CLI)

Как говорится в других ответах, это команда npm, которая будет запускать команду npm из package.json с идентификатором "start", и она не должна просто запускать "ng serve". В 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",

В этом случае npm start приведет к выполнению следующих команд:

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

Это будет одновременно запускать компилятор TypeScript (отслеживая изменения кода) и запускать сервер Node lite (который использует BrowserSync)

Ответ 3

Из документа

npm-start:

При этом запускается произвольная команда, указанная в свойстве пакета "start" его объекта "scripts". Если свойство "start" не указано в объекте "scripts", он запустит узел server.js.

это означает, что он будет вызывать стартовые скрипты в package.json

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

нг служить:

Предоставляется angular/angular-cli для запуска приложений angular2, созданных angular-cli. при установке angular-cli он создаст файл ng.cmd в папке C:\Users\name\AppData\Roaming\npm (для окон) и выполнит "%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

Таким образом, используя npm start вы можете сделать свое собственное выполнение, где ng serve только для angular-cli.

Смотрите также: Что происходит, когда вы запускаете ng serve?

Ответ 4

Есть больше, чем это. Исполняемые файлы разные.

npm run start

запустит локальный исполняемый файл вашего проекта, который находится в вашем node_modules/.bin.

ng serve

запустит другой исполняемый файл, который является глобальным.

Это означает, что если вы клонируете и устанавливаете Angular-проект, созданный с помощью angular-cli версии 5, а ваша глобальная cli-версия - 7, то у вас могут возникнуть проблемы с ng build.

Ответ 5

Вы должны использовать ng serve, следовательно, npm start - это скрипт, который будет запускать то же самое. Более эффективный способ - это прямой вызов ng serve через идущий, но ненужный скрипт