为什么我必须使用“npm start x”启动某些脚本,而仅使用“npm x”启动其他脚本?

Don*_*ana 3 node.js npm angular

在我的package.json中,我有以下部分用于脚本定义。

"scripts": {
 "ng": "ng",
 "start": "ng serve",
 "build": "ng build --prod",
 "test": "ng test",
 "lint": "ng lint",
 "e2e": "ng e2e"
}, ...
Run Code Online (Sandbox Code Playgroud)

每当我想运行该应用程序时,我都会执行npm start(它执行ngserve)。我也可以 go npm run start达到相同的结果。现在,当我尝试构建我的应用程序时,我进行了npm build,但与我的预期相反,没有执行任何构建(没有错误,也没有,执行完成时没有任何输出到控制台)。我必须改为npm run build(当然,它执行了ng build --prod )。

我不明白其中的差异。

小智 9

npm startnpm test是特殊值,您可以在不使用...的情况下运行。好吧,不使用这个词run

npm run实际上是 的快捷方式npm run-script,它允许您运行编写scriptspackage.json.

npm run也可以运行位于该node_modules/.bin文件夹中的脚本。

例如,这意味着您可以运行npm run mocha而不是运行。mocha test

否则,npm 是一个可以与npm [command].

编辑如果您想知道,start并且test是具体的并且不需要 run 关键字,因为它们是最常用的关键字,并且使用它们可以让您非常快速地运行长命令。

启动不是很好吗

npm test 
Run Code Online (Sandbox Code Playgroud)

代替

ng test --code-coverage --reporters mocha,progress,jkhtml --browsers chrome,phantomjs -sm=false
Run Code Online (Sandbox Code Playgroud)

???