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

时间:2018-01-11 12:41:00

标签: 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 运行开始获得相同的结果。现在,当我尝试构建我的应用程序时,我去了 npm build 但是与我的期望相反,没有执行构建(没有错误,也没有,执行完成时没有任何输出到控制台) 。我不得不去 npm run build (当然,它执行 ng build --prod )。

我不明白这种差异。

2 个答案:

答案 0 :(得分:2)

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

npm run实际上是npm run-script的快捷方式,可让您将自己编写的脚本运行到scripts的{​​{1}}属性中。

但是package.json也可以运行位于npm run文件夹中的脚本。

这意味着您可以运行node_modules/.bin而不是npm run mocha

否则,npm是一个可以与mocha test一起使用的可执行文件。

编辑如果你想知道,npm [command]start是特定的,并且不需要run关键字,因为它们是最常用的关键字,并且使用它们允许你可以很快地运行长命令。

启动

不是很好
test

而不是

npm test 

???

答案 1 :(得分:1)

你可以运行npm" native"直接脚本,对于自定义脚本,您必须npm run {customscript}

documentation