命令
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% 准确。更多详细信息请参见此问题。