将命令行 \-\- 参数传递给 Yarn 中的子脚本

新手上路,请多包涵

我有一个类似于此的 package.json:

 "scripts": {
    "dev": "cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js",
    "dev:stub-server": "./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100"
}

我在代码中添加了一些逻辑来改变 dev:stub-server 根据命令行参数的配置方式。因此,每当我运行以下命令时,我都会得到我所期望的:

 yarn dev:stub-server --results=4
$ ./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100 -- --results=4

如您所见,选项被转发到底层脚本,一切都按预期工作。

我的问题是我不能将 --resultsyarn dev 命令传播到 dev:stub-server 的正确位置。父脚本运行 dev:stub-server 但参数在最后被转发到底层脚本,如下所示:

 yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js --results=2

有没有办法使上述工作如下?

 yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server --results=2 | cross-env BABEL_ENV=server babel-node src/server/server.js

提前致谢!

原文由 Luciano M. L. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

Yarn 的 run 仅支持将您的 args 附加到命令链的末尾,并且至少截至日期 2018-06-14,没有办法覆盖它。

当我过去需要这个时,我已经编写了自己的 dev.js 脚本,该脚本由我的 package.json 调用,并将 args 拉出环境变量。

原文由 mrm 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 mac 上,我正在使用:

 "scripts": {
  "benchmark": "sh -c 'ng run ${0}:benchmark'",
}

然后我调用 yarn benchmark editor 其中 editor 是我的参数。

原文由 Philippe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题