在 node package.json 中,使用额外的参数从另一个脚本调用 script,在本例中添加 mocha watch

在 node 的 package.json 中,我想重用一个在‘ script’中已经有的命令。

下面是一个实际的例子

而不是(请注意 看好了脚本中额外的 - 什么) :

"scripts": {
"test" : "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list",
"watch": "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list -w",
}

我想要一些

"scripts": {
"test" : "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list",
"watch": "npm run script test" + "-w",
}

它不能工作(不能在 json 中执行字符串连接) ,但是您应该可以得到我想要的结果

我知道 npm 脚本支持: - & (平行执行) - & & (依次执行)

也许还有别的选择?

42648 次浏览

这可以在 npm@2.1.17中完成。你没有指定你的操作系统和你正在使用的 npm版本,但是除非你已经做了一些事情来更新它,你可能正在运行 npm@1.4.28,它的 没有支持下面的语法。

在 Linux 或 OSX 上,可以用 sudo npm install -g npm@latest更新 npm。有关在所有平台上更新 npm的指南,请参阅 https://github.com/npm/npm/wiki/Troubleshooting#try-the-latest-stable-version-of-npm

您应该可以通过向脚本传递一个额外的参数来实现这一点:

"scripts": {
"test": "mocha --compilers coffee:coffee-script/register --recursive -R list",
"watch": "npm run test -- -w"
}

我使用以下简化的 package.json 对此进行了验证:

{
"scripts": { "a": "ls", "b": "npm run a -- -l" }
}

产出:

$ npm run a


> @ a /Users/smikes/src/github/foo
> ls


package.json
$ npm run b


> @ b /Users/smikes/src/github/foo
> npm run a -- -l




> @ a /Users/smikes/src/github/foo
> ls -l


total 8
-rw-r--r--  1 smikes  staff  55  4 Jan 05:34 package.json
$