5

目标

我有yarn test,它实际上是由两个子命令组成的yarn test:root && yarn test:packages。两者都运行 jest(但包使用 lerna exec 间接执行)。我希望能够yarn test -t=Pattern从终端输入并将两个子命令都附加-t=Pattern到末尾。lerna exec -- "yarn test"似乎没有办法做到这一点。

背景

我有一个 monorepo,用于在每个 lerna 包上lerna exec运行。yarn test

鉴于:

"test": "yarn run test:packages $@ && yarn run test:root $@",
"test:packages": "lerna exec -- yarn test $@", // No args passed
"test:root": "jest ./tests/Storyshots.jest.js $@", // Args passed

我希望能够做类似的事情

yarn test --updateSnapshot并附--updateSnapshot加到yarn test通过 lerna exec 运行

使用常规 npm 脚本(请参阅 参考资料test:root)可以$@正常工作。lerna文档没有提到任何方法来做到这一点。

更新

我认为最简单的方法是编写一个包含 args 和命令的脚本。这将需要在所有 lerna 包中使用。

4

2 回答 2

8

您可以通过使用将命令行参数传递给内部命令--。使用--将表示当前命令选项的结束,并允许将选项传递给内部命令。

所以对于这种情况我们需要转义三遍:

测试:包

  1. 纱线运行测试:包
  2. lerna exec -- 纱线测试

测试:根

  1. 纱线运行测试:root
  2. 开玩笑 ./tests/Storyshots.jest.js

yarn test -- -- -- -t=Pattern

于 2019-03-13T20:12:05.520 回答
1

要附加 args,您只需使用类似lerna exec 'yarn test --updateSnapshot'

于 2018-01-10T00:38:01.617 回答