将 args 传递给 lerna exec 命令
Pass args into lerna exec command
目标
我有yarn test
,其实是由两个子命令yarn test:root && yarn test:packages
组成的。 运行 都是开玩笑(但包是使用 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
并通过 lerna exec
将 --updateSnapshot
附加到 yarn test
运行
对于常规的 npm 脚本(参见 test:root
),使用 $@
效果很好。 lerna docs 没有提到任何方法。
更新
我认为最简单的方法是编写一个包含参数和命令的脚本。这将需要在所有 lerna 包中使用。
要附加参数,您只需使用 lerna exec 'yarn test --updateSnapshot'
您可以使用 --
将命令行参数传递给内部命令。使用 --
将表示当前命令的选项结束,并允许将选项传递给内部命令。
所以这种情况需要转义3次:
test:packages
- 纱线
- 纱线运行test:packages
- lerna 执行 -- 纱线测试
test:root
- 纱线
- 纱线运行test:root
- 开玩笑./tests/Storyshots.jest.js
yarn test -- -- -- -t=Pattern
目标
我有yarn test
,其实是由两个子命令yarn test:root && yarn test:packages
组成的。 运行 都是开玩笑(但包是使用 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
并通过 lerna exec
--updateSnapshot
附加到 yarn test
运行
对于常规的 npm 脚本(参见 test:root
),使用 $@
效果很好。 lerna docs 没有提到任何方法。
更新
我认为最简单的方法是编写一个包含参数和命令的脚本。这将需要在所有 lerna 包中使用。
要附加参数,您只需使用 lerna exec 'yarn test --updateSnapshot'
您可以使用 --
将命令行参数传递给内部命令。使用 --
将表示当前命令的选项结束,并允许将选项传递给内部命令。
所以这种情况需要转义3次:
test:packages
- 纱线
- 纱线运行test:packages
- lerna 执行 -- 纱线测试
test:root
- 纱线
- 纱线运行test:root
- 开玩笑./tests/Storyshots.jest.js
yarn test -- -- -- -t=Pattern