使用lerna将自定义参数发送到npm(纱线)脚本

使用lerna将自定义参数发送到npm(纱线)脚本,npm,yarnpkg,npm-scripts,lerna,Npm,Yarnpkg,Npm Scripts,Lerna,我在尝试使用lerna向npm脚本传递参数时遇到问题 我有一个节点脚本,我想在工作区的每个包中运行它lernadocs建议如下: { “脚本”:{ “我的脚本”:“lerna exec--node\\$lerna\u ROOT\u PATH/scripts/my script.js” } } 现在,如果我在根目录下运行脚本,它将在工作区的每个包中运行脚本 有时,我需要将执行范围限定到特定的包。所以从命令行运行它显然是可行的:lerna exec--scope somepackage--node

我在尝试使用
lerna
npm
脚本传递参数时遇到问题

我有一个节点脚本,我想在工作区的每个包中运行它
lerna
docs建议如下:

{
“脚本”:{
“我的脚本”:“lerna exec--node\\$lerna\u ROOT\u PATH/scripts/my script.js”
}
}
现在,如果我在根目录下运行脚本,它将在工作区的每个包中运行脚本

有时,我需要将执行范围限定到特定的包。所以从命令行运行它显然是可行的:
lerna exec--scope somepackage--node\$lerna\u ROOT\u PATH/scripts/create common scripts.js

我的问题是:如何将npm脚本与
lerna
scope参数连接起来。这不起作用:
运行我的脚本--scope somepackage
,因为它将参数设置为命令的结尾:
lerna exec--node\\$lerna\u ROOT\u PATH/scripts/my-script.js--scope somepackage


谢谢

使用Lerna时,命令通常是嵌套的。意味着一个命令将调用另一个命令等。例如,以下命令:

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
在shell中,可以在运行时使用双破折号(
--
)将参数传递给嵌套命令。它标志着参数(选项)列表的结束。
--
之后的任何参数将被提升到下一个命令。这将适用于嵌套在多个级别的命令,您只需添加
--
的数量,以匹配要将其传递到的命令的级别

考虑到前面的示例,可以使用以下命令:

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