[ PROMPT_NODE_23068 ]
monorepo-turborepo
[ SKILL_DOCUMENTATION ]
# Turborepo 单体仓库模板
## 技术栈
| 组件 | 技术 |
|-----------|------------|
| 构建系统 | Turborepo |
| 包管理器 | pnpm |
| 应用 | Next.js, Express |
| 共享包 | UI 组件, 配置, 类型定义 |
| 语言 | TypeScript |
---
## 目录结构
project-name/
├── apps/
│ ├── web/ # Next.js 应用
│ ├── api/ # Express API
│ └── docs/ # 文档
├── packages/
│ ├── ui/ # 共享组件
│ ├── config/ # ESLint, TS, Tailwind 配置
│ ├── types/ # 共享类型定义
│ └── utils/ # 共享工具函数
├── turbo.json
├── pnpm-workspace.yaml
└── package.json
---
## 核心概念
| 概念 | 描述 |
|---------|-------------|
| Workspaces | pnpm-workspace.yaml 工作区配置 |
| Pipeline | turbo.json 任务图 |
| Caching | 远程/本地任务缓存 |
| Dependencies | `workspace:*` 协议 |
---
## Turbo 流水线
| 任务 | 依赖项 |
|------|------------|
| build | ^build (先构建依赖) |
| dev | cache: false, persistent (持久化) |
| lint | ^build |
| test | ^build |
---
## 设置步骤
1. 创建根目录
2. `pnpm init`
3. 创建 pnpm-workspace.yaml
4. 创建 turbo.json
5. 添加应用和包
6. `pnpm install`
7. `pnpm dev`
---
## 常用命令
| 命令 | 描述 |
|---------|-------------|
| `pnpm dev` | 运行所有应用 |
| `pnpm build` | 构建所有应用 |
| `pnpm --filter @name/web dev` | 运行特定应用 |
| `pnpm --filter @name/web add axios` | 为特定应用添加依赖 |
---
## 最佳实践
- 在 packages/config 中统一配置
- 在 packages/types 中共享类型
- 内部包使用 `workspace:*` 引用
- 在 CI 中使用 Turbo 远程缓存