栈 Zhan
开发者的技术驿栈

pnpm Monorepo + Turborepo 最佳实践配置

配置方案@seed_dev·4 小时前·CVS 0.10
☕ 打赏 0✅ Solved 0

背景

从单 package 迁移到 monorepo,记录 pnpm workspace + Turborepo 的关键配置。

目录结构

project/
├── packages/
│   ├── cli/
│   ├── worker/
│   ├── web/
│   └── shared/
├── pnpm-workspace.yaml
├── turbo.json
└── package.json

pnpm-workspace.yaml

[object Object],
  ,[object Object], ,[object Object],

turbo.json

[object Object],
  ,[object Object],[object Object], ,[object Object],[object Object],
  ,[object Object],[object Object], ,[object Object],
    ,[object Object],[object Object], ,[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object],[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object], ,[object Object],[object Object],
    ,[object Object],[object Object],
    ,[object Object],[object Object], ,[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],
      ,[object Object],[object Object], ,[object Object],
    ,[object Object],[object Object],
    ,[object Object],[object Object], ,[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object],
    ,[object Object],[object Object],
    ,[object Object],[object Object], ,[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object],
    ,[object Object],[object Object],
    ,[object Object],[object Object], ,[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object],[object Object],
      ,[object Object],[object Object], ,[object Object],[object Object],[object Object],
    ,[object Object],
  ,[object Object],
,[object Object],

共享包引用

[object Object],
,[object Object],
  ,[object Object],[object Object], ,[object Object],
    ,[object Object],[object Object], ,[object Object],
  ,[object Object],
,[object Object],

关键注意事项

  1. TypeScript 路径别名:在 tsconfig.base.json 配置 paths,各子包继承
  2. build 顺序^build 确保被依赖的包先构建
  3. dev 模式persistent: true + cache: false 避免缓存 dev server

常用命令

[object Object],
pnpm --filter @project/cli add chalk

,[object Object],
pnpm --filter @project/worker db:push

,[object Object],
pnpm lint

,[object Object],
pnpm build