在节点package.json中,使用额外参数从另一个脚本调用脚本,在这种情况下添加mocha观察器

时间:2015-01-02 02:01:46

标签: json node.js npm mocha

在node的package.json中我想重用一个我已经在'脚本中的命令。

这是实例

代替(请注意观看脚本中的额外 -w ):

"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脚本支持:   - & (并行执行)   - && (顺序执行)

所以也许还有其他选择?

1 个答案:

答案 0 :(得分:48)

这可以在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
$