使用 pnpm 构建 Monorepo 项目

什么是 Monorepo?

Monorepo 是将多个相关项目放在同一个仓库中进行管理的策略。

pnpm Workspace

配置

# pnpm-workspace.yaml
packages:
  - 'apps/*'
  - 'packages/*'

根目录 package.json

{
  "scripts": {
    "dev": "pnpm --parallel -r run dev",
    "build": "pnpm -r run build",
    "lint": "pnpm -r run lint"
  }
}

实际项目结构

monorepo/
├── apps/
│   ├── web/           # Next.js 应用
│   ├── docs/          # 文档站
│   └── admin/         # 后台管理
├── packages/
│   ├── ui/            # UI 组件库
│   ├── utils/         # 工具函数
│   └── config/        # 共享配置
├── pnpm-workspace.yaml
└── package.json

依赖管理

# 给某个包添加依赖
pnpm --filter @myapp/web add lodash

# 给所有包添加依赖
pnpm -r add typescript --save-dev

# 链接本地包
pnpm add @myapp/utils --workspace

优势

  • 共享代码:轻松复用工具函数和组件
  • 统一构建:一次配置,全局生效
  • 原子提交:跨包改动在一个 PR 中完成

总结

pnpm workspace 是搭建 Monorepo 的绝佳选择,速度快、磁盘占用小、配置简单。