返回顶部
本页目录

yarn workspaces foreach

要使用这个命令

首先安装 workspace-tools 插件: yarn plugin import workspace-tools

在所有工作空间上运行一个命令

语法

                            
  • yarn workspaces foreach <commandName> ...

实例

发布当前和所有后代包:

                            
  • yarn workspaces foreach npm publish --tolerate-republish

在当前和所有后代包上运行构建脚本:

                            
  • yarn workspaces foreach run build

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

                            
  • yarn workspaces foreach -pt run build

在几个包及其所有依赖项上运行构建脚本,首先构建依赖项:

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

选项

-R,--recursive
通过 dependencies/devDependencies 查找包而不是使用 workspaces 字段
--from #0
任何递归的基础的 glob 模式标识或路径的数组
-A,--all
在项目的所有工作区上运行命令
-v,--verbose
在每个输出行前加上原始工作区的名称
-p,--parallel
并行运行命令
-i,--interlaced
实时打印命令的输出而不是缓冲它
-j,--jobs #0
执行将被限制的最大并行任务数;或者unlimited
-t,--topological
在命令依赖的所有工作区(常规)完成后运行命令
--topological-dev
在它依赖的所有工作区(常规+开发)完成后运行命令
--include #0
一组 glob 模式标识或路径;只会遍历匹配的工作空间
--exclude #0
一组 glob 模式标识或路径;不会遍历匹配的工作空间
--no-private
避免在私人工作区运行命令
--since
仅包括自指定参考以来已更改的工作空间。

细节

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

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

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

  • 如果-t,--topological已设置,Yarn 将仅在它依赖于该字段的所有工作区dependencies成功完成执行后才运行该命令。如果--topological-dev已设置,则 在确定等待点时将同时考虑dependenciesdevDependencies字段。

  • 如果-A,--all设置,Yarn 将在项目的所有工作区上运行该命令。默认情况下,yarn 仅在当前及其所有后代工作区上运行该命令。

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

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

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

  • 通过使用--include 充当白名单的命令,该命令可能仅适用于某些工作空间。该--exclude标志将做相反的事情,并且将是一个不能执行脚本的包列表。两个标志都接受 glob 模式(如果有效的 IDents 并且被 micromatch支持)。确保对模式进行转义,以防止您自己的 shell 尝试扩展它们。

添加-v,--verbose标志(在交互式终端环境中自动启用)将导致 Yarn 打印更多信息;特别是生成输出的工作区的名称将打印在每一行的前面。

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