命令
- lerna add-caching
- lerna changed
- lerna clean
- lerna create
- lerna diff
- lerna exec
- lerna import
- lerna info
- lerna init
- lerna list
- lerna publish
- lerna repair
- lerna run
- lerna version
- lerna watch
过滤选项
Lerna 命令可以应用过滤选项来控制它们操作的包。
需要过滤的 lerna 子命令的选项
安装 lerna 以访问 lerna CLI。
选项
--scope <glob>
仅包含名称与给定 glob 匹配的包。
$ lerna exec --scope my-component -- ls -la
$ lerna run --scope "toolbar-*" test
$ lerna run --scope package-1 --scope "*-2" lint
注意: 对于某些 glob,可能需要引用选项参数以避免过早的 shell 扩展。
使用 npx 运行
使用 npx 运行 lerna 时,传递 glob 参数时需要使用显式的 "="。这是为了防止 npx 过早地扩展参数。
例如:
$ npx lerna run --scope="toolbar-*" test
$ npx lerna run --scope="package-{1,2,5}" test
--ignore <glob>
排除名称与给定 glob 匹配的包。
$ lerna exec --ignore "package-{1,2,5}"  -- ls -la
$ lerna run --ignore package-1 test
$ lerna run --ignore "package-@(1|2)" --ignore package-3 lint
更多过滤示例可以在这里找到。
--no-private
排除私有包。默认情况下包含私有包。
--since [ref]
仅包含自指定 ref 以来已更改的包。如果未传递 ref,则默认为最近的标签。
# 列出自最近标签以来已更改的包的内容
$ lerna exec --since -- ls -la
# 为所有自 `main` 以来已更改的包运行测试
$ lerna run test --since main
# 列出自 `some-branch` 以来已更改的所有包
$ lerna ls --since some-branch
在 CI 中使用时特别有用,如果可以获取 PR 将要进入的目标分支,因为可以将该分支作为 --since 选项的 ref。这适用于进入默认分支的 PR 以及功能分支。
--exclude-dependents
在使用 --since 运行命令时,排除所有传递依赖项,覆盖默认的"已更改"算法。
如果没有 --since,此标志无效,并将抛出错误。
--include-dependents
在运行命令时,无论 --scope、--ignore 或 --since,都包含所有传递依赖项。
--include-dependencies
在运行命令时,无论 --scope、--ignore 或 --since,都包含所有传递依赖。
与任何接受 --scope 的命令一起使用(bootstrap、clean、ls、run、exec)。
确保对任何作用域包(通过 --scope 或 --ignore)的所有依赖项(包括开发依赖)也被操作。
注意:这将覆盖
--scope和--ignore标志。即,即使被
--ignore标志匹配的包,如果它被正在引导的另一个包依赖,也仍将被引导。
这对于需要"设置"依赖于其他包已设置的单个包的情况很有用。
$ lerna bootstrap --scope my-component --include-dependencies
# 将引导 my-component 及其所有依赖
$ lerna bootstrap --scope "package-*" --ignore "package-util-*" --include-dependencies
# 所有匹配 "package-util-*" 的包将被忽略,除非它们被名称匹配 "package-*" 的包依赖
--include-merged-tags
$ lerna exec --since --include-merged-tags -- ls -la
在使用 --since 运行命令时,包含合并分支的标签。仅在从功能分支进行大量发布时有用,这通常不推荐。
限制
尽管可以在不首先安装项目依赖的情况下运行 Lerna,例如使用 pnpm dlx 或 npx,但不建议这样做。命令可能有效,但其输出可能不是 100% 准确。更多详细信息请参见此问题。