Repo
Docs
API 参考
run

turbo run <task>

在指定范围内的所有工作区中运行 npm 脚本。任务必须在您的 pipeline 配置中指定。

turbo run <task1> <task2> [options] [-- <args passed to task1 and task2>]

turbo 可以运行多个任务,任何在 -- 之后的参数将传递给要执行的任务。请注意,这些附加参数 *不会* 传递给由于 pipeline 配置中的依赖关系而运行的任何其他任务。

选项

--cache-dir

类型:字符串

默认为 ./node_modules/.cache/turbo。指定本地文件系统缓存目录。如果您将其从默认值更改,请确保将此文件夹添加到您的 .gitignore 中。

turbo run build --cache-dir="./my-cache"

相同的行为也可以通过 TURBO_CACHE_DIR=./my-cache 环境变量设置。

--concurrency

类型:数字 | 字符串

默认为 10。设置/限制任务执行的最大并发度。这必须是一个大于或等于 1 的整数或一个百分比值,如 50%。使用 1 强制串行(即一次一个任务)执行。使用 100% 使用所有可用的逻辑处理器。如果还传递了 --parallel 标志,则忽略此选项。

turbo run build --concurrency=50%
turbo run test --concurrency=1

--continue

默认值为 false。此标志告诉 turbo 在出现错误(即任务的非零退出代码)时是否继续执行。默认情况下,指定 --parallel 标志将自动将 --continue 设置为 true,除非显式设置为 false。当 --continuetrue 时,turbo 将以执行过程中遇到的最高退出代码值退出。

turbo run build --continue

--cwd

设置命令的工作目录。

turbo run build --cwd=./somewhere/else

--dry / --dry-run

不执行任务,而是显示有关将要运行的受影响工作区和任务的详细信息。指定 --dry=json 以获取 JSON 格式的输出。

任务详细信息包括

  • task: 要执行的任务的名称
  • package: 运行任务的工作区
  • hash: 任务的哈希值,用于缓存
  • directory: 运行任务的目录
  • command: 用于运行任务的实际命令
  • outputs: 将被缓存的任务输出的位置
  • logFile: 任务运行的日志文件的位置
  • dependencies: 必须在此任务之前运行的任务
  • dependents: 必须在此任务之后运行的任务

--env-mode

类型:字符串

控制任务可用的环境变量。

选项描述
infer根据允许列表配置推断严格模式或宽松模式
loose允许所有环境变量
strict仅允许声明的变量

PATHSHELLSYSTEMROOT 始终可用于所有任务。

infer

在推断模式下,Turborepo 将查找每个任务配置的 passThroughEnv,以及 globalPassThroughEnvturbo.json 配置的根目录中。如果两者都定义了,则推断为“严格”模式。如果两者都没有定义,则推断为 loose 模式。

在此模式下,globalPassThroughEnv 的值和标志的值(“infer”)仅在 globalPassThroughEnv 设置时才会合并到全局哈希中。

loose

在宽松模式下,所有环境变量都可用于任务。标志的值(“loose”)本身将合并到全局哈希中。

strict

在严格模式下,只有在以下键中指定的环境变量可用于任务

  • envpassThroughEnv 在每个任务配置中
  • globalEnvglobalPassThroughEnv 在您的配置的根目录中

globalPassThroughEnv 的值和标志的值(“strict”)本身将合并到全局哈希中。

如果指定或推断严格模式,则所有任务都将在严格模式下运行,无论其配置如何。

--filter

类型:string[]

指定工作区、目录和 Git 提交的组合作为执行的入口点。

可以组合多个过滤器来选择不同的目标集。此外,过滤器还可以排除目标。与任何过滤器匹配且未被明确排除的目标将包含在最终的入口点选择中。换句话说,最终的目标列表是所有匹配提供的过滤器的目标的并集,减去已排除的目标的并集。

有关 --filter 标志和过滤的更详细的信息,请参阅我们文档中的 专用页面

turbo run build --filter=my-pkg
turbo run test --filter=...^@scope/my-lib
turbo run build --filter=./apps/* --filter=!./apps/admin

--graph

此命令将生成当前任务图的 svg、png、jpg、pdf、json、html 或 其他支持的输出格式 (opens in a new tab)。输出文件格式默认为 jpg,但可以通过指定文件名扩展名来控制。

如果 Graphviz 未安装,或未提供文件名,则此命令将点图打印到 stdout

turbo run build --graph
turbo run build test lint --graph=my-graph.svg
turbo run build test lint --graph=my-json-graph.json
turbo run build test lint --graph=my-graph.pdf
turbo run build test lint --graph=my-graph.png
turbo run build test lint --graph=my-graph.html
turbo run build test lint --graph=my-graph.mermaid

已知错误:目前,所有可能的管道任务节点都将被添加到图中,即使该管道任务在给定工作区中实际上不存在。这对执行没有影响,这意味着

  1. 终端输出可能会夸大任务运行的工作区数量
  2. 点图可视化可能包含表示不存在的任务的节点。

--force

忽略现有的缓存工件,并强制重新执行所有任务(覆盖重叠的工件)

turbo run build --force

相同行为也可以通过 TURBO_FORCE=true 环境变量设置。

--global-deps

指定要进行哈希处理的全局文件系统依赖项的 glob。对于影响多个包/应用程序的 .env 和根目录中的文件很有用。可以多次指定。

turbo run build --global-deps=".env.*" --global-deps=".eslintrc" --global-deps="jest.config.js"

您也可以在您的 turbo 配置中指定这些内容,作为 globalDependencies 键。

--framework-inference

类型:布尔值

指定是否对任务进行框架推断。默认值为 true,可以配置为 false,这将跳过对任务的框架推断。这将禁用 自动环境变量包含

turbo run build --framework-inference=false

--ignore

类型:string[]

忽略文件或目录对范围的影响。在后台使用 glob 模式。

turbo run build --ignore="apps/**/*"
turbo run build --ignore="packages/**/*"
turbo run build --ignore="packages/**/*" --ignore="\!/packages/not-this-one/**/*"

多个模式如何工作

正模式(例如 foo*)添加到结果中,而负模式(例如 !foo)从结果中减去。

因此,单独的否定(例如 ['!foo'])永远不会匹配任何内容 - 使用 ['*', '!foo'] 代替。

Globbing 模式

只是一个快速概述。

  • * 匹配任意数量的字符,但不匹配 /
  • ? 匹配单个字符,但不匹配 /
  • ** 匹配任意数量的字符,包括 /,只要它是路径部分中的唯一内容
  • {} 允许使用逗号分隔的“或”表达式列表
  • ! 在模式开头将否定匹配

--log-order

类型:字符串

设置任务输出顺序的类型。默认值为“auto”,它允许 turbo 检测它是否在 CI 中运行,并在该环境中对日志进行分组,而在其他环境中进行流式传输。

选项描述
autoTurbo 根据其自身的启发式方法进行决定
stream尽快显示输出
grouped按任务显示输出

示例

turbo run build --log-order=stream
turbo run build --log-order=grouped

如果日志顺序设置为 auto 并且 turbo 检测到它在 GitHub Actions 上运行,那么 turbo 将创建 分组日志 (在新标签页中打开)。您可以通过设置自己的日志顺序来选择退出此行为。

--log-prefix

类型:字符串

这控制着 <package>:<task>: 前缀,该前缀用于在运行任务时(在执行和从缓存中重播时)生成的日志行。这也适用于“单个包”存储库,其中前缀将只是 <task>:。运行多个并行任务时的日志输出将交错,因此如果省略前缀,则必须使用其他方法来确定哪个任务记录了该行(即丰富的 JSON 日志)。

选项描述
autoTurbo 根据其自身的启发式方法进行决定
none无前缀
prefix强制将前缀附加到日志
--log-prefix=none
turbo run dev --log-prefix=none

--no-cache

默认值为 false。不要缓存任务的结果。这对于像 next devreact-scripts start 这样的监视命令很有用。

turbo run build --no-cache
turbo run dev --no-cache

--no-daemon

默认值为 false。在某些情况下,turbo 可以运行一个独立进程来预先计算用于确定需要完成哪些工作的值。此独立进程(守护进程)是一种优化,对于 turbo 的正常运行不是必需的。传递 --no-daemon 指示 turbo 避免使用或创建独立进程。

--output-logs

类型:字符串

设置输出日志的类型。这将覆盖 outputMode(如果在 turbo.json 中定义)。

选项描述
full显示所有输出(默认)
hash-only仅显示任务的哈希值
new-only仅显示来自缓存未命中的输出
errors-only仅显示来自任务失败的输出
none隐藏所有任务输出

示例

turbo run build --output-logs=full
turbo run build --output-logs=new-only
turbo run build --output-logs=errors-only
turbo run build --output-logs=none

--only

默认值为 false。将执行限制为仅包含指定的任务。这与 lernapnpm 默认运行任务的方式非常相似。

turbo.json 中给出此管道

{
  "$schema": "https://turbo.rust-lang.net.cn/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"]
    },
    "test": {
      "dependsOn": ["^build"]
    }
  }
}
turbo run test --only

执行每个工作区中的 test 任务。它不会 build

--parallel

默认值为 false。在工作区之间并行运行命令,并忽略任务依赖关系图。

通常情况下,--parallel 标志用于不会退出的“dev”或 --watch 模式任务。从 [email protected] 开始,我们建议使用 persistent 配置来配置这些任务。

turbo run lint --parallel --no-cache
turbo run dev --parallel --no-cache

--profile

生成 Chrome 追踪格式的运行轨迹,您可以使用它来分析性能。可以在 Perfetto (在新标签页中打开) 中查看配置文件。

turbo run build --profile=profile.json

--remote-cache-timeout

默认值为 30 秒。以秒为单位设置远程缓存操作的超时时间。

turbo run build --remote-cache-timeout=60

--remote-only

默认值为 false。忽略所有任务的本地文件系统缓存。仅允许使用远程缓存读取和缓存工件。

turbo run build --remote-only

相同的行为也可以通过 TURBO_REMOTE_ONLY=true 环境变量来设置。

--summarize

.turbo/runs 中生成一个包含运行元数据的 JSON 文件,包括受影响的工作区、执行的任务(包括其计时和哈希值)、根据您的配置扩展到缓存键以及缓存工件中包含的所有文件。此标志有助于确定以下内容,包括:

  • turbo 如何解释您为 inputsoutputs 设置的 glob 语法
  • 两次任务运行之间哪些输入发生了变化,从而导致缓存命中或未命中
  • 任务计时如何随时间变化

--token

用于远程缓存的承载令牌。与 --team 标志结合使用,适用于在非交互式 shell(例如 CI/CD)中运行。

turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

您还可以通过设置名为 TURBO_TOKEN 的环境变量来设置当前令牌的值。如果同时存在标志和环境变量,则标志优先于环境变量。

如果您在 Vercel 上使用远程缓存并在 Vercel 上构建项目,则此环境变量和标志是不必要的,因为它们会自动为您设置。假设您在 Vercel 上使用远程缓存,但在另一个 CI 提供商(如 CircleCI 或 GitHub Actions)中构建。您可以使用 Vercel 个人访问令牌作为您的 --tokenTURBO_TOKEN。如果您使用的是自定义远程缓存,则此值将用于向您的自定义远程缓存发送 HTTP 承载令牌。

--team

远程缓存团队的 slug。与 --token--team 标志结合使用,适用于在非交互式 shell 中运行。

turbo run build --team=my-team
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

您还可以通过设置名为 TURBO_TEAM 的环境变量来设置当前团队的值。如果同时存在标志和环境变量,则标志优先于环境变量。

--preflight

仅在配置了远程工件缓存时适用。启用在每次缓存工件和分析请求之前发送预检请求。后续上传和下载将遵循重定向。

turbo run build --preflight

相同的行为也可以通过 TURBO_PREFLIGHT=true 环境变量来设置。

--verbosity

要指定日志级别,请使用 --verbosity=<num>-v, -vv, -vvv

  • Info : --verbosity=1,或 -v
  • Debug: --verbosity=2,或 -vv
  • Trace: --verbosity=3,或 -vvv
turbo run build -v
turbo run build --verbosity=2
turbo run build -vvv

已弃用的选项

--cpuprofile

类型:字符串

--cpuprofile1.11.x 中已弃用。请改用 --profile

要查看 CPU 配置文件,请将配置文件输出到指定文件,然后将该文件放到 speedscope (在新标签页中打开) 中。

重要提示:CPU 分析器在 Windows Subsystem for Linux 下无法正常工作。分析器必须针对原生 Windows 构建,并使用命令提示符运行。

turbo run build --cpuprofile="<cpu-profile-file-name>"

--include-dependencies

--include-dependencies1.2.x 中已弃用。请改用 --filter

默认值为 false。当 true 时,turbo 将添加当前执行中工作区所依赖的任何工作区(即在 dependenciesdevDependencies 中声明的工作区)。

当在 CI 中使用 --filter 时,这很有用,因为它可以确保执行所需的所有依赖项都已实际执行。

--deps

--deps1.2.x 中已弃用。请使用 --filter 代替。

默认为 true。在执行中包含依赖的工作区使用者。

turbo run build --deps
turbo run build --no-deps

示例

假设您有工作区 A、B、C 和 D,其中 A 依赖于 B,C 依赖于 D。您第一次运行 turbo run build,所有内容都已构建并缓存。然后,您更改了 B 中的一行代码。在 --deps 标志开启的情况下,运行 turbo run build 将在 B 和 A 中执行 build,但在 C 和 D 中不会执行,因为它们不受更改的影响。如果您要运行 turbo run build --no-deps,turbo 将只在 B 中运行 build

--heap

--heap1.2.x 中已弃用。请使用 --profile 代替。

类型:字符串

要查看堆跟踪,将跟踪输出到给定文件,请使用 go tool pprof [file] 并键入 top。您也可以将其放入 speedscope (opens in a new tab) 并使用 left heavysandwich 视图模式。

turbo run build --heap="<heap-file-name>"

--scope

--scope1.2.x 中已弃用。请使用 --filter 代替。

类型:string[]

指定/过滤用作执行入口点的工作区。针对 package.json name 字段(而不是文件系统)进行通配符匹配。

turbo run lint --scope="@example/**"
turbo run dev --scope="@example/a" --scope="@example/b" --no-cache --no-deps

--since

--since1.2.x 中已弃用,请使用 --filter 代替。

根据自合并基线以来哪些工作区已更改来过滤执行。

turbo run build --since=origin/main

重要提示:这使用 git diff ${target_branch}... 机制来识别哪些工作区已更改。假设工作区的所有输入文件都存在于它们各自的工作区文件夹中。

--trace

--trace1.11.x 中已弃用,请使用 --profile 代替。

类型:字符串

要查看 CPU 跟踪,将跟踪输出到给定文件,请使用 go tool trace [file]

重要提示:跟踪查看器在 Windows Subsystem for Linux 中不起作用。

turbo run build --trace="<trace-file-name>"