何时使用'npm start'以及何时使用'ng serve'?

问题描述 投票:114回答:5

ng serve通过开发服务器提供Angular项目

npm start运行在其“scripts”对象的包的“start”属性中指定的任意命令。如果在“scripts”对象上未指定“start”属性,则它将运行节点server.js。

似乎ng serve启动了嵌入式服务器,而npm start启动了Node服务器。

有人可以对它有所启发吗?

angular angular-cli
5个回答
157
投票

npm start将运行你在start文件中为scripts对象的package.json命令定义的任何内容。

所以,如果它看起来像这样:

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

然后npm start将运行ng serve


28
投票

对于使用CLI的项目,通常使用ng serve。在其他情况下,您可能想要使用npm start。这里详细说明:

服务

将提供“Angular CLI aware”项目,即使用Angular CLI创建的项目,特别是使用:

ng new app-name

所以,如果你使用CLI搭建项目,你可能想要使用ng服务

npm开始

这可以用于不支持Angular CLI的项目(或者它可以简单地用于为Angular CLI识别的项目运行'ng serve')

正如其他答案所述,这是一个npm命令,它将从package.json运行具有标识符'start'的npm命令,并且它不仅需要运行'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-server(用户BrowserSync)


10
投票

从文件

npm-start

这将运行在其“scripts”对象的包的“start”属性中指定的任意命令。如果在“scripts”对象上未指定“start”属性,则它将运行节点server.js。

这意味着它将调用package.json中的启动脚本

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

ng serve

由angular / angular-cli提供,以启动由angular-cli创建的angular2应用程序。当你安装angular-cli时,它将在C:\Users\name\AppData\Roaming\npm(对于windows)下创建ng.cmd并执行"%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

所以使用npm start你可以自己执行ng serve只适用于angular-cli

另见:What happens when you run ng serve?


0
投票

还有更多。执行的可执行文件是不同的。

npm run start

将运行位于node_modules / .bin中的项目本地可执行文件。

ng serve

将运行另一个全局的可执行文件。

这意味着如果您克隆并安装使用angular-cli版本5创建的Angular项目并且您的全局cli版本为7,那么您可能会遇到ng build问题。


-2
投票

你应该使用ng服务因此npm start是一个将运行相同的东西的脚本。更有效的方式是直接调用服务而不是通过不必要的脚本

© www.soinside.com 2019 - 2024. All rights reserved.