本文的英文版本How to Build Only Affected Projects in a Monorepo on Vercel | utities - Powerful and Easy-to-Use Online Tools已发布在 www.utities.online 的 Blog Posts ,欢迎访问阅读
问题提出
对于大型 Monorepo 项目,尤其是包含多个独立 Web 应用的代码库,在 Vercel 平台上部署时往往面临一个常见问题:即使只修改了其中一个小项目的代码,Vercel 默认配置也会触发所有项目的重新构建和部署。这不仅浪费了宝贵的构建资源,还显著延长了部署时间,影响开发效率。
utities.online 项目案例
项目目录结构
以下是一个典型的 Monorepo 项目结构,采用 pnpm 工作区管理多个 Web 应用,这些应用都部署在 utities.online 域名体系下:
├── package.json├── pnpm-lock.yaml├── pnpm-workspace.yaml└── packages/├── altitude/ ← 海拔测量工具├── auto-trim-image/ ← 图片自动裁剪工具├── image-compare-pro/ ← 图像对比工具├── logo-dash/ ← Logo 生成工具├── shared-ui/ ← 共享 UI 组件库└── video-splitter/ ← 视频分割工具
该项目使用 pnpm 工作区管理多个独立的 Web 应用,这些应用分别部署在 utities.online 域名下的不同子域名上,同时官网部署在 www.utities.online 。
共享 UI 组件依赖关系
在这个 Monorepo 结构中,各 Web 应用通过 pnpm workspace 协议引用共享的 UI 组件库:
json// 子项目 package.json 中的依赖示例{"dependencies": {"shared-ui": "workspace:*
