本文档提供了 RealWorld 项目中 Turbo 构建系统配置的详细信息。它涵盖了 Turbo 的配置方式、任务定义以及它如何协调整个项目的构建过程。有关部署的信息,请参阅 部署。
Turbo 是一个高性能的构建系统,专为 JavaScript/TypeScript monorepos 设计,通过智能缓存和并行化来优化构建时间。在 RealWorld 项目中,Turbo 协调多个应用程序的构建过程,确保依赖项按正确的顺序构建。
标题:RealWorld 项目结构中的 Turbo 配置
来源:package.json24-28 turbo.json1-17
Turbo 作为 RealWorld 项目的开发依赖安装。该项目使用 pnpm 作为其包管理器,并有特定的版本要求。
| 配置项 | 值 |
|---|---|
| 依赖版本 | 最新(如 package.json 中所述) |
| 包管理器 | pnpm@8.9.0 |
| Node 要求 | >=18 |
来源:package.json30-33 package.json34-37
turbo.json 文件包含构建系统的核心配置
标题:turbo.json 配置结构
配置使用了 Turbo schema,并将环境文件定义为全局依赖,这意味着对这些文件的更改将使所有任务的缓存失效。
$schema: "https://turbo.net.cn/schema.json"
globalDependencies: ["**/.env.*local"]
turbo.json 文件定义了三个主要任务
build:为生产环境编译项目
^build)lint:对代码库运行 linting 工具
^lint)dev:在开发模式下运行项目
cache: false)persistent: true)以支持持续开发根目录下的package.json将 Turbo 集成到项目的 npm 脚本中,为开发人员提供了用于构建、开发和 lint 项目的简单命令。
标题:Turbo 命令执行流程
| 脚本命令 | Turbo 命令 | 目的 |
|---|---|---|
pnpm build | turbo build | 按正确的顺序构建所有应用程序 |
pnpm dev | turbo dev | 为所有应用程序启动开发服务器 |
pnpm lint | turbo lint | 对所有应用程序运行 linting 工具 |
在部署过程中,Turbo 通过 build 脚本间接使用。Procfile 显示了构建过程如何集成到部署工作流程中。
web: cd apps/api && npx prisma generate && && pnpm build && pnpm start
此命令更改目录到 API 应用程序,生成 Prisma 客户端,构建应用程序(该应用程序内部使用 Turbo),然后启动服务器。
来源:Procfile1
Turbo 根据依赖项配置管理任务的执行顺序。dependsOn 中的^符号表示该任务依赖于工作区中所有依赖项的相同任务。
标题:Turbo 任务执行流程
RealWorld 项目中的 Turbo 配置提供了一个精简的构建系统,用于:
配置极简但有效,专注于开发、构建和代码质量所需的核心任务。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(6dc657)