跳至主要内容

yarn workspaces foreach

对所有工作区运行命令。

用法

$ yarn workspaces foreach <commandName> ...

示例

发布所有包

yarn workspaces foreach -A npm publish --tolerate-republish

对所有后代包运行构建脚本

yarn workspaces foreach -A run build

并行运行当前和所有后代包中的构建脚本,首先构建包依赖项

yarn workspaces foreach -Apt run build

运行多个包及其所有依赖项中的构建脚本,首先构建依赖项

yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build

详细信息

此命令将在当前及其所有后代工作区上运行给定的子命令。各种标志可以改变命令的确切行为

  • 如果设置了 -p,--parallel,则命令将并行运行;它们默认限制为大约等于一半核心数的并行任务数,但可以通过 -j,--jobs 覆盖,或通过设置 -j unlimited 禁用。

  • 如果 -p,--parallel-i,--interlaced 都设置,Yarn 将在接收到输出时打印输出中的行。如果没有设置 -i,--interlaced,它将缓冲每个进程的输出,并且仅在源进程退出后才打印结果缓冲区。

  • 如果设置了 -t,--topological,Yarn 将仅在通过 依赖项 字段依赖的所有工作区都成功执行后才运行命令。如果设置了 --topological-dev,则在确定等待点时将考虑 依赖项devDependencies 字段。

  • 如果设置了 -A,--all,Yarn 将在项目的全部工作区上运行命令。

  • 如果设置了 -R,--recursive,Yarn 将通过递归评估 依赖项devDependencies 字段,而不是查看 workspaces 字段,来查找要运行命令的工作区。

  • 如果设置了 -W,--worktree,Yarn 将通过查看当前工作树来查找要运行命令的工作区。

  • 如果设置了 --from,Yarn 将使用匹配“from”glob 的包作为任何递归搜索的起点。

  • 如果设置了 --since,Yarn 将仅对自指定 ref 以来已修改的工作区运行该命令。默认情况下,Yarn 将使用 changesetBaseRefs 配置选项指定的 ref。

  • 如果设置了 --dry-run,Yarn 将解释它将执行的操作,而不会实际执行任何操作。

  • 该命令可能仅适用于某些工作区,方法是使用 --include,它充当白名单。--exclude 标志将执行相反的操作,并且将是不允许执行脚本的包列表。这两个标志都接受 glob 模式(如果有效标识符并受 micromatch 支持)。确保转义模式,以防止您自己的 shell 尝试展开它们。

-v,--verbose 标志最多可以传递两次:一次在输出行前加上源工作区名称,再次包含开始/结束/计时日志行。在终端环境中默认启用最大详细程度。

如果命令是 run 并且正在运行的脚本不存在,则将跳过子工作区,并且不会出错。

选项

定义描述

--from #0

glob 模式标识符或路径的数组,用作任何递归的基础

-A,--all

对项目的全部工作区运行该命令

-R,--recursive

对当前工作区及其所有递归依赖项运行该命令

-W,--worktree

对当前工作树的所有工作区运行该命令

-v,--verbose

将日志详细程度提高至多 2 倍

-p,--parallel

并行运行命令

-i,--interlaced

实时打印命令的输出,而不是将其缓冲

-j,--jobs #0

执行将限制的最大并行任务数;或 unlimited

-t,--topological

在所有依赖项(常规)工作区完成后运行该命令

--topological-dev

在所有依赖项(常规 + 开发)工作区完成后运行该命令

--include #0

glob 模式标识符或路径的数组;仅匹配的工作区将被遍历

--exclude #0

glob 模式标识符或路径的数组;匹配的工作区将不会被遍历

--no-private

避免在私有工作区运行命令

--since

仅包含自指定 ref 以来已更改的工作区。

-n,--dry-run

打印将运行的命令,而不实际运行它们