当 运行ning “yarn 运行” 时将参数传递给 “node” 可执行文件

Pass arguments to “node” executable when running “yarn run”

节点可以通过各种选项启动。特别有趣的是 --inspect 标志:

node --inspect node_modules/.bin/jest some.spec.js

是否可以通过某种方式将 --inspect 标志传递给 yarn run?例如:

yarn run test --inspect some.spec.js 

有一个 similar question for npm run,似乎不可能。

一般来说,yarn run ... 不支持向 NodeJS 传递任意参数。但是,--inspect 标志是一个例外,具体取决于您的 Yarn 版本。

截至 2022 年 3 月,最新版本的 Yarn 支持 yarn run command--inspect--inspect-brk 参数。您的问题的答案现在是“是”,以下将起作用:

yarn run --inspect some.spec.js

对于旧版本的 Yarn(甚至 NPM),有几个选项。

首先,您可以使用 NODE_OPTIONS 环境变量将参数传递给 NodeJS。例如,

export NODE_OPTIONS="--inspect"
yarn run test some.spec.js

然后在package.json中,你可以定义一个脚本来利用这个:

"scripts": {
  "test": "jest",
  "test:inspect": "NODE_OPTIONS='--inspect' yarn run test"
}

其次,正如您所说,您可以直接使用NodeJS,

node --inspect ./node_modules/jest-cli/bin/jest.js some.spec.js

对于旧版本的 Yarn,这可能是您唯一的两个选择。但是,这两个选项都适用于 NPM 和 Yarn。

或者,您可以使用 npx 并使用 -n--node-arg 标志传递节点参数npx -n=--inspect-brk jest

npx 在处理带有别名命令的 cli 或包时感觉更直观。