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
已设置,则 在确定等待点时将同时考虑dependencies
和devDependencies
字段。 -
如果
-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
并且正在运行的脚本不存在,则子工作区将被跳过而不会出错。