发送自定义的参数NPM(纱)的脚本与勒拿湖

问题描述 投票:2回答:1

试图将参数传递给同一个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 yarnpkg npm-scripts lerna
1个回答
1
投票

当使用勒拿湖命令通常嵌套。这意味着一个命令将调用命令花药等。例如下面的命令:

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
© www.soinside.com 2019 - 2024. All rights reserved.