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