Ответ 1
npm start
выполнит все, что вы определили для команды start
объекта scripts
в вашем файле package.json
.
Итак, если это выглядит так:
"scripts": {
"start": "ng serve"
}
Затем npm start
будет запускать ng serve
.
ng serve
служит для проекта Angular через сервер разработки
npm start
запускает произвольную команду, указанную в пакете "start" свойство его "скриптов" объекта. Если не указано свойство "start" на объекте "scripts" он запустит node server.js.
Кажется, что ng serve
запускает встроенный сервер, тогда как npm start
запускает серверы node.
Может кто-то проливает свет на него?
npm start
выполнит все, что вы определили для команды start
объекта scripts
в вашем файле package.json
.
Итак, если это выглядит так:
"scripts": {
"start": "ng serve"
}
Затем npm start
будет запускать ng serve
.
Для проекта, который использует 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)
Из документа
При этом запускается произвольная команда, указанная в свойстве пакета "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?
Есть больше, чем это. Исполняемые файлы разные.
npm run start
запустит локальный исполняемый файл вашего проекта, который находится в вашем node_modules/.bin.
ng serve
запустит другой исполняемый файл, который является глобальным.
Это означает, что если вы клонируете и устанавливаете Angular-проект, созданный с помощью angular-cli версии 5, а ваша глобальная cli-версия - 7, то у вас могут возникнуть проблемы с ng build.
Вы должны использовать ng serve, следовательно, npm start - это скрипт, который будет запускать то же самое. Более эффективный способ - это прямой вызов ng serve через идущий, но ненужный скрипт