单包工作区
虽然 Turborepo 在 多包工作区(通常称为 monorepos)中非常有效,但它也可以用于加速单包工作区。
Turborepo 最重要的功能在单包工作区中均可使用,包括本地和远程缓存以及任务并行化。不适用的功能是在单包上下文中没有意义的功能,例如包任务 (app#build
)。
须知:
单包工作区的示例是 npx create-next-app
或 npm create vite
的输出。
安装
将 turbo
安装到你的应用程序中
使用全局 turbo
运行 package.json
脚本(可选)
为了获得更快的开发者工作流程,你也可以全局安装 turbo
,并直接从命令行运行命令。
安装完成后,你可以运行 turbo build
,Turborepo 将运行来自 package.json
的 build
脚本。再次运行 turbo build
将命中缓存。
此时,turbo
没有提供太多价值,因为你可能只会在代码更改时重新构建应用程序,并且当你的代码更改时,turbo
将错过缓存。通过两个简单的步骤,你可以从 turbo
中获得更多价值。
使用一个命令运行多个脚本
在许多仓库中,都有需要运行的设置任务或预构建步骤。这些任务通常一次运行一个 - 但你可以使用 turbo
轻松地将它们变成一个脚本。
例如,假设你有一个项目,每次开始工作时,我们都必须设置开发环境。你需要
- 启动数据库的 Docker 容器。
- 将数据库模式推送到数据库。
- 使用数据填充数据库。
- 启动开发服务器。
你可以使用 Turborepo 将这些任务安排到一个命令中。首先,在你的 package.json
中创建脚本
然后,在 turbo.json
中创建任务以按顺序运行这些脚本


上述任务中的 dependsOn
数组为任务创建顺序。当你运行 turbo dev
时,将首先运行 db:up
、db:push
,然后是 db:seed
的脚本。
并行化任务
使用 turbo
并行化任务可以通过同时运行所有可以运行的任务来加速任务。例如,你可以同时运行 ESLint、TypeScript 和 Prettier 检查。假设有如下脚本
你可以创建像这样的配置


然后,要同时运行所有任务
使用输入优化任务
因为 Turborepo 会将单包工作区视为一个包,所以优化任务的输入可以帮助确保不相关的更改不会导致缓存未命中。
例如,可以使用仅包含 TypeScript 文件的输入来配置使用 tsc --noEmit
检查类型的脚本

