Ozz*_*123 4 npm lerna npm-scripts yarnpkg
npm我在尝试使用 向脚本传递参数时遇到问题lerna。
我有一个节点脚本,我想在工作区的每个包中运行它。lerna文档建议如下:
{
"scripts": {
"my-script": "lerna exec -- node \\$LERNA_ROOT_PATH/scripts/my-script.js"
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在,如果我在根目录中运行,yarn run my-script它将在工作区中的每个包中运行脚本。
有时,我需要将执行范围限制到特定的包。因此,从命令行运行它显然是有效的:lerna exec --scope somepackage -- node \$LERNA_ROOT_PATH/scripts/create-common-scripts.js。
我的问题:如何将 npm 脚本与lerna范围参数连接起来。这不起作用:yarn run my-script --scope somepackage,因为它将参数设置为命令的末尾:lerna exec -- node \\$LERNA_ROOT_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]
Run Code Online (Sandbox Code Playgroud)
在 shell 中,可以使用双破折号 ( --) 在运行时将参数传递给嵌套命令。它标志着参数(选项)列表的结束。后面的任何参数都--将被提升到下一个命令。这将适用于嵌套多个级别的命令,您所要做的就是添加数量--以匹配您想要将它们传递给的命令的级别。
考虑到前面的示例,以下命令:
$ npm run release -- --stream -- -- --dry-run --no-git.requireCleanWorkingDir
Run Code Online (Sandbox Code Playgroud)
将提升参数至:
1. npm run release
2. lerna run release --stream
3. npm run release
4. release-it --dry-run --no-git.requireCleanWorkingDir
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2508 次 |
| 最近记录: |