Monorepo 工程化:pnpm Workspaces 与 Turborepo 构建加速实践技术背景Monorepo 能统一管理多包与多应用代码。pnpm 的工作空间与硬链接机制减少重复安装,Turborepo 的任务管线与远程缓存显著缩短构建与测试时间,提升协作效率与一致性。核心内容pnpm 工作空间配置# pnpm-workspace.yaml
packages:
- apps/*
- packages/*
// package.json(顶层)
{
"name": "repo",
"private": true,
"packageManager": "pnpm@9",
"devDependencies": {
"turbo": "^1.13.0"
}
}
Turborepo 管线与缓存// turbo.json
{
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"test": {
"dependsOn": ["build"],
"outputs": []
},
"lint": {
"outputs": []
}
}
}
应用与包示例// apps/web/package.json
{
"name": "web",
"version": "0.0.0",
"scripts": {
"build": "vite build",
"dev": "vite",
"test": "vitest"
},
"dependencies": {
"ui": "workspace:*"
}
}
// packages/ui/package.json
{
"name": "ui",
"version": "0.0.0",
"sideEffects": false,
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts"
}
远程缓存与 CI 集成(思路)- 配置 TURBO_TOKEN 与 TURBO_TEAM 使用远程缓存(GitHub Actions/CI 环境)
- 首次构建后后续提交命中缓存,减少重复任务
技术验证参数在 20+ 包的 Monorepo(Windows 11,pnpm@9,Turborepo)下:冷启动安装时间:相较 npm/yarn 降低 35–55%增量构建耗时:降低 40–70%远程缓存命中率:≥ 60%CI 总时长:降低 30–50%应用场景多应用/多包协作与复用统一依赖管理与版本治理大型团队的构建与测试加速最佳实践使用 pnpm 工作空间消除重复安装与锁文件漂移明确 Turborepo 任务依赖与输出,确保缓存有效配置远程缓存与拉通 CI,提升团队收益在包中启用 `sideEffects: false` 保证 tree-shaking 效果

发表评论 取消回复