在 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 应用中 package.json 与 package-lock.json 的信息和变更管理
下载了包在node_modules中,但没有在package.json中保存该包信息。
在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher