run
运行在 turbo.json
中指定的任务。
- [tasks]: Turborepo 可以同时运行一个或多个任务。要通过
turbo
运行任务,必须在turbo.json
中指定。 - [options]: 选项用于控制
turbo run
命令的行为。可用标志选项在下面描述。 - [-- [args passed to tasks]]: 你也可以将参数传递给底层脚本。请注意,所有参数都将传递给 run 命令中命名的所有任务。
须知:
turbo run
是 turbo
的别名。 turbo run build lint check-types
与 turbo build lint check-types
相同。 我们建议在 CI 管道中使用 turbo run
,并在本地使用全局 turbo
,以便于使用。
如果没有提供任务,turbo
将显示仓库中软件包可用的任务。
选项
--affected
筛选仅受当前分支更改影响的软件包。
默认情况下,此标志等效于 --filter=...[main...HEAD]
。 这会从 Git 的角度考虑 main
和 HEAD
之间的更改。
比较需要 base 和 head 之间的所有内容都存在于检出中。如果检出太浅,则所有软件包都将被视为已更改。
例如,设置 Git 使用 --filter=blob:none --depth=0
进行检出将确保 --affected
具有正确的工作历史记录。
你可以使用各自的系统环境变量覆盖默认的 base 和 head。
--cache <options>
默认值:local:rw,remote:rw
指定运行的缓存源。接受逗号分隔的选项列表
local
:使用本地文件系统缓存remote
:使用远程缓存
当省略缓存源时,读取和写入都将被禁用。
缓存源使用以下值
rw
:读写r
:只读w
:只写- 无 (
local:
) : 不使用缓存。等效于省略缓存源选项。
--cache-dir <path>
默认值:.turbo/cache
指定文件系统缓存目录。
更改目录时,请确保该目录位于你的 .gitignore
中。
也可以通过 TURBO_CACHE_DIR=example/path
系统变量设置相同的行为。
--concurrency <number | percentage>
默认值:10
设置/限制任务执行的最大并发数。必须是大于或等于 1
的整数或百分比值,例如 50%
。
- 使用
1
强制串行执行(一次一个任务)。 - 使用
100%
以使用所有可用的逻辑处理器。 - 如果也传递了
--parallel
标志,则此选项将被忽略。
--continue[=<option>]
默认值:never
指定在存在错误(例如,任务的非零退出代码)时,turbo
应如何处理当前和挂起的任务。
- 当
--continue=never
且发生错误时,turbo
将取消所有任务。 - 当
--continue=dependencies-successful
且发生错误时,turbo
将取消依赖任务。依赖项已成功的任务将继续运行。 - 当
--continue=always
且发生错误时,turbo
将继续运行所有任务,即使是那些依赖项失败的任务。 - 当
--continue
在没有值的情况下指定时,它将默认为always
。
在所有情况下,turbo
都将以执行期间遇到的最高退出代码值退出。
--cwd <path>
默认值:根 turbo.json
的目录
设置命令的工作目录。
--dangerously-disable-package-manager-check
Turborepo 使用你的仓库的 lockfile 来确定缓存行为,软件包图等等。 因此,我们使用packageManager
字段来帮助你稳定你的 Turborepo。
为了帮助增量迁移或在你无法使用 packageManager
字段的情况下,你可以使用 --dangerously-disable-package-manager-check
来选择退出此检查,并承担不稳定的 lockfile 产生不可预测行为的风险。 禁用后,Turborepo 将尝试尽最大努力发现仓库的预期包管理器。
你也可以使用turbo.json
中的配置或TURBO_DANGEROUSLY_DISABLE_PACKAGE_MANAGER_CHECK
环境变量来选择退出此检查,以获得更广泛的覆盖范围。
--dry / --dry-run
而不是执行任务,显示有关将要运行的软件包和任务的详细信息。
指定 --dry=json
以 JSON 格式获取输出。
任务详细信息包括有用的信息,例如(列表并非详尽无遗)
字段 | 描述 |
---|---|
taskId | 任务的 ID,格式为 package-name#task-name |
task | 要执行的任务的名称 |
package | 要在其中运行任务的软件包 |
hash | 任务的哈希值(用于缓存) |
hashOfExternalDependencies | 全局哈希值 |
command | 用于运行任务的命令 |
inputs | 用于哈希的文件输入列表 |
outputs | 已缓存的文件输出列表 |
dependencies | 必须在此任务之前运行的任务 |
dependents | 必须在此任务之后运行的任务 |
environmentVariables | 在 env 和 passThroughEnv 中指定的环境变量列表 |
--env-mode <option>
类型:字符串
控制任务运行时可用的环境变量。
须知:
PATH
、SHELL
和 SYSTEMROOT
始终可用于任务。
也可以通过 TURBO_ENV_MODE=strict
系统变量设置相同的行为。
strict
只有在以下键中指定的环境变量才可用于任务
如果指定或推断为严格模式,则所有任务都以 strict
模式运行,而与其配置无关。
loose
计算机上的所有环境变量都可用于任务的运行时。
当在缓存中未使用上面 strict
中列出的键考虑环境变量时,这可能是危险的。 在 loose
模式下,你更有可能从缓存中恢复软件包的错误环境变量版本。
--filter <string>
指定要从仓库图中执行的目标。 可以组合多个过滤器以选择不同的目标集。
可以组合过滤器以创建软件包、目录和 git 提交的组合。
目标类型 | 描述 | 示例 |
---|---|---|
软件包 | 通过其在 package.json 中的名称选择软件包。 | turbo run build --filter=ui |
目录 | 指定目录以捕获要运行任务的软件包列表。 与其他过滤器一起使用时,必须用 {} 包裹。 | turbo run build --filter=./apps/* |
Git 提交 | 使用 Git 说明符,指定具有源代码控制更改的软件包。 必须用 [] 包裹。 | turbo run build --filter=[HEAD^1] |
须知:
-F
是 --filter
的别名。用于过滤的微语法
!
:从选择中否定目标。...
使用软件包:选择软件包图中相对于目标的所有软件包。 在软件包名称之前使用...
将选择目标的依赖项,而在软件包名称之后使用...
将选择目标的依赖项。...
使用 Git 提交:使用[<from commit>]...[<to commit>]
选择范围。^
:在使用...
时从选择中省略目标。
有关过滤的深入讨论和实际用例,请访问运行任务页面。
使用任务标识符
你还可以以 package-name#task-name
的格式为特定软件包运行特定任务。
须知:
这也将运行任务的依赖项。 要在不运行任务依赖项的情况下运行任务,请使用--only
标志。
高级过滤示例
你可以组合多个过滤器以进一步优化你的目标。 多个过滤器组合为并集,否定过滤器从并集的结果中删除软件包。
--force
忽略现有的缓存工件并重新执行所有任务。
须知:
--force
将覆盖现有的任务缓存。
也可以通过TURBO_FORCE
环境变量设置相同的行为。
--framework-inference
默认值:true
指定是否为任务执行框架推断。
当为 false
时,自动包含环境变量将被禁用。
--global-deps <file glob>
指定要哈希的全局文件系统依赖项的 glob。 对于 .env
和根目录中影响多个软件包的文件很有用。
我们建议在 turbo.json
的 globalDependencies
键中指定你想要包含在哈希中的文件 glob,以确保始终考虑它们。
--graph <file type>
默认值:jpg
此命令将生成当前任务图的 svg
、png
、jpg
、pdf
、json
、html
或其他支持的输出格式。
如果未安装Graphviz,或者未提供文件名,则此命令会将 dot 图打印到 stdout
。
已知错误:目前,所有可能的任务节点都将添加到图中,即使该脚本实际上在给定的软件包中不存在。 这对执行没有影响,但该图可能会夸大所涉及的软件包和任务的数量。
--log-order <option>
默认值:auto
设置日志输出的顺序。
默认情况下,turbo
将在 CI 环境中使用 grouped
日志,在其他任何地方都使用 stream
日志。 当使用终端 UI时,此标志不适用。
选项 | 描述 |
---|---|
stream | 在可用时立即显示输出 |
grouped | 按任务分组输出 |
auto | turbo 根据其自身的启发式方法决定 |
--log-prefix <option>
默认值:auto
控制运行任务时生成的日志行的 <package>:<task>:
前缀。
选项 | 描述 |
---|---|
prefix | 强制在日志前添加前缀 |
none | 无前缀 |
auto | turbo 根据其自身的启发式方法决定 |
--no-cache
已弃用
此标志已弃用,将在未来的主要版本中删除。 请改用--cache
标志。
默认值 false
不缓存任务的结果。
--daemon
和 --no-daemon
turbo
可以运行后台进程来预先计算用于确定需要完成的工作的值。 此独立进程 (daemon) 是一种优化,并非 turbo
正常运行所必需的。
默认的守护进程使用情况是使用 turbo.json
中的 daemon
字段为你的仓库设置的。 传递 --daemon
需要 turbo
使用独立进程,而 --no-daemon
指示 turbo
避免使用或创建独立进程。
也可以通过 TURBO_DAEMON=true
系统变量设置相同的行为。
--output-logs <option>
默认值:full
设置输出日志记录的类型,如果 outputLogs
在 turbo.json
中定义,则覆盖它。
选项 | 描述 |
---|---|
full | 显示所有日志 |
hash-only | 仅显示任务的哈希值 |
new-only | 仅显示缓存未命中的日志 |
errors-only | 仅显示任务失败的日志 |
none | 隐藏所有任务日志 |
--only
默认值:false
限制执行仅包括指定的任务。
示例
给定此 turbo.json


该命令将仅执行每个软件包中的 test
任务。 它不会运行 build
。
此外,--only
将仅在指定的软件包中运行任务,而不包括依赖项。 例如,turbo run build --filter=web --only
将仅在 web
软件包中运行 build
脚本。
--parallel
默认值:false
跨软件包并行运行命令,忽略任务依赖关系图。
--parallel
标志通常用于不退出的长时间运行的“dev”或“watch”任务。 从 turbo@1.7
开始,我们建议使用 persistent
配置这些任务。
--preflight
仅在配置了远程缓存时适用。 启用在每个缓存工件和分析请求之前发送预检请求。 后续的上传和下载将遵循重定向。
也可以通过 TURBO_PREFLIGHT=true
系统变量设置相同的行为。
--profile
以 Chrome Tracing 格式生成运行的跟踪,你可以使用它来分析性能。
你必须提供详细级别标志 (-v
, -vv
, 或 -vvv
) 以及 --profile
才能生成跟踪。
可以在 Perfetto 等工具中查看配置文件。
--remote-cache-timeout
默认值:30
设置远程缓存操作的超时时间(以秒为单位)。
--remote-only
已弃用
此标志已弃用,将在未来的主要版本中删除。 请改用--cache
标志。
默认值:false
忽略所有任务的本地文件系统缓存,使用远程缓存进行读取和缓存任务输出。
--summarize
在 .turbo/runs
中生成一个 JSON 文件,其中包含有关运行的元数据,包括
- 受影响的软件包
- 已执行的任务(包括其计时和哈希值)
- 缓存工件中包含的所有文件
此标志有助于调试以确定诸如以下内容:
turbo
如何解释你的inputs
和outputs
的 glob 语法- 两次任务运行之间更改了哪些输入以产生缓存未命中
- 任务计时如何随时间变化
摘要查看器
虽然没有 Turborepo 原生的运行摘要 UI 查看器,但如果你想将运行摘要作为 Web 视图查看,我们鼓励你使用社区构建的 https://turbo.nullvoxpopuli.com。
--token
远程缓存的 Bearer 令牌。 在非交互式 shell 中与 --team
标志结合使用时很有用。
此值也可以使用 TURBO_TOKEN
系统变量设置。 如果两者都存在,则标志值将覆盖系统变量。
须知:
如果你正在使用 Vercel 远程缓存并在 Vercel 上构建你的项目,则无需使用此标志。 此值将为你自动设置。
--team
远程缓存团队的 slug。 在非交互式 shell 中与 --token
标志结合使用时很有用。
此值也可以使用 TURBO_TEAM
系统变量设置。 如果两者都存在,则标志值将覆盖系统变量。
--ui
指定用于输出的 UI。 接受 stream
或 tui
。
--verbosity
要指定日志级别,请使用 --verbosity=<num>
或 -v, -vv, -vvv
。
级别 | 标志值 | 缩写 |
---|---|---|
信息 | --verbosity=1 | -v |
调试 | --verbosity=2 | -vv |
跟踪 | --verbosity=3 | -vvv |