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
。当 --continue
为 true
时,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 | 仅允许声明的变量 |
PATH
、SHELL
和 SYSTEMROOT
始终可用于所有任务。
infer
在推断模式下,Turborepo 将查找每个任务配置的 passThroughEnv
,以及 globalPassThroughEnv
在 turbo.json
配置的根目录中。如果两者都定义了,则推断为“严格”模式。如果两者都没有定义,则推断为 loose
模式。
在此模式下,globalPassThroughEnv
的值和标志的值(“infer”)仅在 globalPassThroughEnv
设置时才会合并到全局哈希中。
loose
在宽松模式下,所有环境变量都可用于任务。标志的值(“loose”)本身将合并到全局哈希中。
strict
在严格模式下,只有在以下键中指定的环境变量可用于任务
env
和passThroughEnv
在每个任务配置中globalEnv
和globalPassThroughEnv
在您的配置的根目录中
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
已知错误:目前,所有可能的管道任务节点都将被添加到图中,即使该管道任务在给定工作区中实际上不存在。这对执行没有影响,这意味着
- 终端输出可能会夸大任务运行的工作区数量
- 点图可视化可能包含表示不存在的任务的节点。
--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 中运行,并在该环境中对日志进行分组,而在其他环境中进行流式传输。
选项 | 描述 |
---|---|
auto | Turbo 根据其自身的启发式方法进行决定 |
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 日志)。
选项 | 描述 |
---|---|
auto | Turbo 根据其自身的启发式方法进行决定 |
none | 无前缀 |
prefix | 强制将前缀附加到日志 |
--log-prefix=none
turbo run dev --log-prefix=none
--no-cache
默认值为 false
。不要缓存任务的结果。这对于像 next dev
或 react-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
。将执行限制为仅包含指定的任务。这与 lerna
和 pnpm
默认运行任务的方式非常相似。
在 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 如何解释您为
inputs
和outputs
设置的 glob 语法 - 两次任务运行之间哪些输入发生了变化,从而导致缓存命中或未命中
- 任务计时如何随时间变化
--token
用于远程缓存的承载令牌。与 --team
标志结合使用,适用于在非交互式 shell(例如 CI/CD)中运行。
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx
您还可以通过设置名为 TURBO_TOKEN
的环境变量来设置当前令牌的值。如果同时存在标志和环境变量,则标志优先于环境变量。
如果您在 Vercel 上使用远程缓存并在 Vercel 上构建项目,则此环境变量和标志是不必要的,因为它们会自动为您设置。假设您在 Vercel 上使用远程缓存,但在另一个 CI 提供商(如 CircleCI 或 GitHub Actions)中构建。您可以使用 Vercel 个人访问令牌作为您的 --token
或 TURBO_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
类型:字符串
--cpuprofile
在 1.11.x
中已弃用。请改用 --profile
。
要查看 CPU 配置文件,请将配置文件输出到指定文件,然后将该文件放到 speedscope (在新标签页中打开) 中。
重要提示:CPU 分析器在 Windows Subsystem for Linux 下无法正常工作。分析器必须针对原生 Windows 构建,并使用命令提示符运行。
turbo run build --cpuprofile="<cpu-profile-file-name>"
--include-dependencies
--include-dependencies
在 1.2.x
中已弃用。请改用 --filter
。
默认值为 false
。当 true
时,turbo
将添加当前执行中工作区所依赖的任何工作区(即在 dependencies
或 devDependencies
中声明的工作区)。
当在 CI 中使用 --filter
时,这很有用,因为它可以确保执行所需的所有依赖项都已实际执行。
--deps
--deps
在 1.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
--heap
在 1.2.x
中已弃用。请使用 --profile
代替。
类型:字符串
要查看堆跟踪,将跟踪输出到给定文件,请使用 go tool pprof [file]
并键入 top
。您也可以将其放入 speedscope (opens in a new tab) 并使用 left heavy
或 sandwich
视图模式。
turbo run build --heap="<heap-file-name>"
--scope
--scope
在 1.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
--since
在 1.2.x
中已弃用,请使用 --filter
代替。
根据自合并基线以来哪些工作区已更改来过滤执行。
turbo run build --since=origin/main
重要提示:这使用 git diff ${target_branch}...
机制来识别哪些工作区已更改。假设工作区的所有输入文件都存在于它们各自的工作区文件夹中。
--trace
--trace
在 1.11.x
中已弃用,请使用 --profile
代替。
类型:字符串
要查看 CPU 跟踪,将跟踪输出到给定文件,请使用 go tool trace [file]
。
重要提示:跟踪查看器在 Windows Subsystem for Linux 中不起作用。
turbo run build --trace="<trace-file-name>"