【问题标题】:In a package.json script, how do I pass an argument to node, as opposed to the script?在 package.json 脚本中,如何将参数传递给节点,而不是脚本?
【发布时间】:2021-10-03 12:35:37
【问题描述】:

我的package.json 中有一个脚本,看起来像这样:

  "scripts": {
    "test": "... && mocha --full-trace test/db test/http test/storage test/utils",

我想将--async-stack-traces 传递给mocha,但--async-stack-traces 是节点命令行参数,而不是mocha 命令行参数。

我想我可以通过运行node --async-stack-traces node_modules/mocha/bin/mocha --full-trace test/db test/http test/storage test/utils 来实现这一点,但是这让人感觉不优雅或不习惯。还有其他方法可以实现吗?

【问题讨论】:

标签: javascript node.js npm package.json npm-scripts


【解决方案1】:

你写的方式基本上就是这样做的方式:

node --async-stack-traces node_modules/mocha/bin/mocha --full-trace test/db test/http test/storage test/utils

您可以像这样使用node_modules/.bin 来整理一下:

node --async-stack-traces node_modules/.bin/mocha --full-trace test/db test/http test/storage test/utils

下一个可能与 Windows 不兼容,也不太容易理解,但如果你只支持类 UNIX 操作系统,你可以依靠 $PATH 注入 npm 脚本来整理一下:

node --async-stack-traces `which mocha` --full-trace test/db test/http test/storage test/utils

如果不想依赖whereis,可以使用npm bin

node --async-stack-traces `npm bin`/mocha --full-trace test/db test/http test/storage test/utils

希望在这一点上,您举起双手回到上面的第一个或第二个选项。 (我推荐第二个选项,这样您就不必依赖 mocha 包布局,这可能会发生变化。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 2017-12-13
    • 2015-02-25
    • 2018-07-29
    • 2016-05-15
    • 1970-01-01
    • 2022-10-04
    • 2020-05-09
    相关资源
    最近更新 更多