关于 dependency-upgrade
dependency-upgrade 是面向使用 pnpm catalog 的项目维护者的技能,介绍依赖升级流程,涵盖版本集中管理、测试、破坏性变更修复、安全更新、冲突处理和回滚。
主要功能
- 01检查过期依赖
- 02在 pnpm catalog 中集中管理版本
- 03测试升级并修复破坏性变更
- 04审计并修复漏洞
- 05排查依赖冲突
- 06回滚升级变更
适用场景
- 01升级工作区中的依赖
- 02适配主要版本发布后的变更
- 03检查并处理有漏洞的包
- 04从失败的依赖升级中恢复
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ motormetrics/ motormetrics --skill dependency-upgrade安装后在 Claude Code 中输入/dependency-upgrade确认已加载。
详细介绍
依赖升级技能
使用 pnpm with catalog 集中管理依赖。
检查更新
pnpm outdated # Check all outdated
pnpm -r outdated # Across workspace
pnpm -F @sgcarstrends/api outdated # Specific package
pnpm dlx taze --interactive # Interactive upgrade
升级流程
1. 更新 Catalog
# pnpm-workspace.yaml
catalog:
next: ^16.0.0 # Upgraded from ^15.0.0
react: ^19.0.0
在 package.json 中,软件包使用 "package": "catalog:" 引用。
2. 安装并测试
pnpm install
pnpm tsc --noEmit # Type check
pnpm test # Unit tests
pnpm biome check . # Lint
pnpm build # Build
pnpm dev # Manual testing
3. 修复不兼容变更
// Example: Next.js 16 async params
// Before
export default function Page({ params }: { params: { id: string } }) {
return <div>{params.id}</div>;
}
// After
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
return <div>{id}</div>;
}
4. 提交
git commit -m "chore(deps): upgrade Next.js to v16
- Upgrade Next.js 15 → 16
- Upgrade React 18 → 19
- Fix async params migration
BREAKING CHANGE: Requires Node.js 20+"
主版本升级
Next.js
pnpm dlx @next/codemod@latest upgrade latest # Run codemod
# Update catalog: next: ^16.0.0, react: ^19.0.0
pnpm install
# Fix: async params, async cookies/headers
TypeScript
# Update catalog: typescript: ^5.3.3
pnpm install
pnpm tsc --noEmit # Fix type errors
Drizzle ORM
# Update catalog: drizzle-orm: ^0.30.0, drizzle-kit: ^0.20.0
pnpm install
pnpm -F @sgcarstrends/database db:generate # If schema changed
安全更新
pnpm audit # Check vulnerabilities
pnpm audit --fix # Auto-fix
# Or manually update vulnerable package in catalog
依赖冲突
pnpm why package-name # Check dependency chain
pnpm dedupe # Deduplicate
将 overrides 作为最后手段:
{ "pnpm": { "overrides": { "react": "^19.0.0" } } }
回滚
git reset --hard HEAD
# Or revert lockfile:
git checkout main -- pnpm-lock.yaml
pnpm install
故障排除
# Lockfile conflicts
rm pnpm-lock.yaml && pnpm install
# Build failures after upgrade
rm -rf node_modules .turbo dist .next && pnpm install && pnpm build
最佳实践
- 使用 Catalog:在 pnpm-workspace.yaml 中集中管理版本
- 全面测试:升级后运行所有测试
- 阅读变更日志:升级前检查不兼容变更
- 逐步升级:不要一次性更新所有内容
- 分别提交:将依赖升级与功能开发分开提交
- 自动化安全更新:使用 Dependabot 应用安全补丁
参考资料
- pnpm Catalog:https://pnpm.io/catalogs
- Next.js Codemods:https://nextjs.org/docs/app/building-your-application/upgrading/codemods
- 请参阅
security技能了解漏洞扫描
评论
支持 Markdown