Node.js 为什么我必须以“开始”开始一些脚本;npm启动x";和其他带有“的;npm x“;只有

Node.js 为什么我必须以“开始”开始一些脚本;npm启动x";和其他带有“的;npm x“;只有,node.js,angular,npm,Node.js,Angular,Npm,在我的package.json中,我有以下脚本定义部分 "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build --prod", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, ... 每当我想运行应用程序时,我都会进入npm start(执行ng serve)。我也可以去npm跑步开始达到同样的效果。现在,当我尝试构建我的应用程序时,我使用了

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

"scripts": {
 "ng": "ng",
 "start": "ng serve",
 "build": "ng build --prod",
 "test": "ng test",
 "lint": "ng lint",
 "e2e": "ng e2e"
}, ...
每当我想运行应用程序时,我都会进入npm start(执行ng serve)。我也可以去npm跑步开始达到同样的效果。现在,当我尝试构建我的应用程序时,我使用了npm build,但与我的预期相反,没有执行任何构建(没有错误,也没有错误,只有在执行完成时没有输出到控制台)。我不得不改用npm运行build(当然是执行ng build--prod)

我不理解这种差异。

您可以直接运行npm“本机”脚本,对于自定义脚本,您必须
npm运行{customscript}


npm start
npm test
是特殊值,您可以在不使用。。。不用使用
这个词就可以运行

npm run
实际上是
npm run script
的快捷方式,它允许您运行写入
包.json的
scripts
属性的脚本

但是
npm run
也可以运行位于
节点\ u modules/.bin
文件夹中的脚本

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

否则,npm是一个可执行文件,可以与
npm[command]
一起使用

EDIT如果您想知道,
start
test
是特定的,不需要run关键字,因为它们是最常用的关键字,使用它们可以让您快速运行长命令

发射不是很好吗

npm test 
而不是

ng test --code-coverage --reporters mocha,progress,jkhtml --browsers chrome,phantomjs -sm=false

我明白了。应该有帮助的automagic。但我想知道当我去npm构建时发生了什么。因为没有运行,脚本不会被执行,但是执行的是什么?!嗯,我什么也不想说,但是您可能可以安装一个名为build with
npmi-g build
的包,这应该会启动所述包。顺便说一下,我编辑了我的答案,请随意看!是的+1和据此。