在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher

Posted

技术标签:

【中文标题】在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher【英文标题】:In node package.json, invoke script from another script with extra parameter, in this case add mocha watcher 【发布时间】:2015-02-28 10:56:01 【问题描述】:

在节点的 package.json 中,我想重用我在“脚本”中已有的命令。

这是一个实际的例子

而不是(注意 watch 脚本上额外的 -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】:

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

【讨论】:

完美,谢谢。这是修复 github.com/o2platform/fluentnode/commit/… 的提交 从脚本调用另一个脚本时,我错过了“npm run”。谢谢! 直到-- 告诉npm run 不要在-- 之后寻找选项(在本例中为-w)。 值得注意的是,在 shell(bash、zsh 等)中,-- 双破折号被大多数(不是全部)命令用来指示“选项结束”man bash 提供此信息:A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --. 如果我们使用yarn并且没有安装yarn怎么办npm安装了,反之亦然???

以上是关于在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher的主要内容,如果未能解决你的问题,请参考以下文章

Node.js学习笔记七使用package.json

在 Node.js 中,模块如何从应用程序的 package.json 中获取数据?

Node 应用中 package.json 与 package-lock.json 的信息和变更管理

下载了包在node_modules中,但没有在package.json中保存该包信息。

在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher

npm中package.json详解