试图将参数传递给同一个npm
脚本lerna
时,我有一个问题。
我有我要在工作区中的每个包内运行节点脚本。 lerna
文档提出以下建议:
{
"scripts": {
"my-script": "lerna exec -- node \\$LERNA_ROOT_PATH/scripts/my-script.js"
}
}
所以现在,如果我在根目录中运行yarn run my-script
它将运行在工作区中的每个包里面的脚本。
有时候,我需要范围的执行特定数据包。因此,从命令行中运行这显然作品:lerna exec --scope somepackage -- node \$LERNA_ROOT_PATH/scripts/create-common-scripts.js
。
我的问题:我怎么能与lerna
范围参数连接NPM脚本。这是行不通的:yarn run my-script --scope somepackage
,因为它设置参数的命令的末尾:lerna exec -- node \\$LERNA_ROOT_PATH/scripts/my-script.js --scope somepackage
。
谢谢!
当使用勒拿湖命令通常嵌套。这意味着一个命令将调用命令花药等。例如下面的命令:
npm run release (in monorepo root) [1] > lerna run release [2] > npm run release (in package) [3] > release-it [4]
在一个壳参数可以使用双破折号(--
)被传递到嵌套指令在运行时。它标志着参数(选项)列表的末尾。在--
之后的任何参数将被提升到下一个命令。这将嵌套在多个层次深命令的工作,你所要做的就是添加--
的数量,以匹配您想将它们传递给命令的水平。
考虑到前面的例子,下面的命令:
$ npm run release -- --stream -- -- --dry-run --no-git.requireCleanWorkingDir
将卷扬参数:
1. npm run release
2. lerna run release --stream
3. npm run release
4. release-it --dry-run --no-git.requireCleanWorkingDir