| name | deployment-verification |
| description | 开发环境部署到生产环境前的验证清单与最佳实践,重点关注 Monorepo 依赖管理与环境一致性。 |
Deployment Verification Skill
用于指导从本地开发环境部署到生产环境(如 Railway, Vercel)时的验证步骤,特别针对 Monorepo 架构下的常见问题。
使用场景
当进行以下操作时,请参考此规范:
- 首次配置生产环境部署
- 引入新的第三方依赖
- 升级 Node.js 或关键工具链版本
- 处理 "本地能跑,线上挂了" 的构建错误
验证规范
目录
- 依赖完整性验证 (Phantom Dependencies)
- 环境一致性验证
- 构建流程验证
- 常见错误与修复
依赖完整性验证
在 Monorepo (TurboRepo/PNPM) 中,最常见的部署错误是幽灵依赖 (Phantom Dependencies)。
现象
本地开发正常运行,但线上构建失败,报错 Cannot find module 'xxx'。
原因
本地包管理器(尤其是 PNPM 在宽松模式下或通过 Workspace)可能允许代码访问未在当前 package 的 package.json 中显式声明的依赖(例如兄弟 package 的依赖)。
生产构建通常是纯净环境(Clean Install),严格遵循 package.json,因此构建失败。
检查清单
验证命令
在本地模拟严格环境进行验证:
pnpm clean
rm -rf node_modules apps/*/node_modules packages/*/node_modules
pnpm install --frozen-lockfile
pnpm build --filter <app-name>
环境一致性验证
确保本地开发环境与生产容器环境的基础配置一致。
Node.js 版本
生产环境(如 Railway, Vercel)通常有默认的 Node 版本(往往较旧)。
包管理器
构建流程验证
构建脚本
检查 turbo.json 和 package.json 中的构建脚本。
常见错误与修复
1. Module not found: Can't resolve 'xyz'
修复: 在报错的子项目中显式安装该依赖。
pnpm add xyz --filter <project-name>
2. lockfile is not up to date
修复: 本地重新安装并更新 lockfile。
pnpm install
git add pnpm-lock.yaml
3. Node 版本不匹配
错误: You are using Node.js 18.x.x. For Next.js, Node.js version ">=20.9.0" is required.
修复: 添加 .nvmrc 并推送到远程。
4. 依赖冲突 (React 19 vs 18)
错误: ERR_PNPM_PEER_DEP_ISSUES
修复: 在根目录 package.json 使用 pnpm.overrides 强制版本统一。
"pnpm": {
"overrides": {
"react": "19.0.0",
"react-dom": "19.0.0"
}
}