将args传递给lerna exec命令

时间:2018-01-09 14:01:40

标签: npm yarnpkg lerna

目标

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

背景

我有一个monorepo,使用lerna exec在每个lerna包上运行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运行

使用test:root使用常规npm脚本(请参阅$@)可以正常工作。 lerna docs没有提及任何方法。

更新

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

2 个答案:

答案 0 :(得分:1)

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

因此,在这种情况下,我们需要逃避三遍:

测试:软件包

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

测试:根

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

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

答案 1 :(得分:0)

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

之类的内容