RealWorld 项目在其 monorepo 结构中,使用 Turborepo (Turbo) 作为构建系统来协调开发和生产工作流。本文档将解释构建系统的配置、架构和工作流。
有关特定于部署的说明,请参阅 部署。
构建系统以 Turborepo 为中心,这是一种用于 JavaScript/TypeScript monorepo 的高性能构建系统,由 pnpm 作为包管理器进行管理。
来源: package.json24-28 turbo.json1-17 Procfile1
该 turbo.json 文件定义了任务管道和执行规则
关键配置要素
| 配置 | 描述 |
|---|---|
globalDependencies | 触发所有任务重建的文件(环境变量文件) |
tasks.build.dependsOn | “^build”表示此任务依赖于所有依赖项的构建任务 |
tasks.lint.dependsOn | “^lint”表示此任务依赖于所有依赖项的 lint 任务 |
tasks.dev.cache | false 禁用开发任务的缓存 |
tasks.dev.persistent | true 使任务保持在 watch 模式下运行 |
来源: turbo.json1-17
根目录的 package.json 文件定义了调用 Turbo 的主要脚本
| 脚本 | 命令 | 描述 |
|---|---|---|
build | turbo build | 构建 monorepo 中的所有应用程序 |
dev | turbo dev | 启动所有应用程序的开发服务器 |
lint | turbo lint | 为所有应用程序运行 linting |
format | prettier --write "**/*.{ts,tsx,md}" | 使用 Prettier 格式化代码 |
系统要求
| 要求 | 版本 |
|---|---|
| Node.js | >= 18 |
| pnpm | 8.9.0 |
该 Procfile 定义了 Heroku 等平台的部署命令
web: cd apps/api && npx prisma generate && && pnpm build && pnpm start
此序列
来源: Procfile1
开发工作流提供了一个带有热重载的实时反馈循环
该 dev 任务使用 Turbo 的 persistent: true 设置,使服务器保持在 watch 模式下运行。
来源: package.json26 turbo.json12-15
生产构建遵守 Turbo 中定义的依赖图
来源: package.json25 turbo.json5-8
Turbo 的依赖表示确保任务按正确的顺序运行
在 dependsOn 中,^ 前缀指示 Turbo 在运行当前包的任务之前,先在所有依赖项上运行指定任务。
来源: turbo.json5-11
与 RealWorld 构建系统一起工作的常用命令
| 命令 | 目的 |
|---|---|
pnpm run dev | 启动开发环境 |
pnpm run build | 构建生产版本 |
pnpm run lint | 运行 linting 检查 |
pnpm run format | 使用 Prettier 格式化代码 |
构建系统与此存储库结构协同工作
这种 monorepo 结构使 Turbo 能够有效地管理应用程序之间的依赖关系并优化构建过程。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(6dc657)