跳到主要内容

命令

过滤选项

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 的命令一起使用(bootstrapcleanlsrunexec)。 确保对任何作用域包(通过 --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 dlxnpx,但不建议这样做。命令可能有效,但其输出可能不是 100% 准确。更多详细信息请参见此问题