用途:智能升级 npm 依赖,重点处理主版本升级带来的破坏性变更。支持可选过滤参数(如 react、axios、lodash),只更新指定包。
主要流程与能力:
- 检测 monorepo:用 find . -name "package.json" -not -path "/node_modules/" -not -path "/.git/" 查找 package.json;多个时让用户多选,未找到则退出。
- 发现更新:在目标目录运行 ncu --format group(带过滤时加 --filter "$ARGUMENTS"),把更新分为主版本、次版本、补丁版本。
- 选择策略:谨慎(先次/补丁,再逐个主版本)、一次性全部、跳过主版本、逐个交互确认。
- 研究破坏性变更:对每个主版本升级,计算版本跨度(如 17→19 需研究 v18 和 v19),用 WebSearch 检索迁移指南与破坏性变更,提取 API、配置、peer 依赖、行为变化,并用 Grep 在代码库中定位受影响文件。
- 确认后执行:ncu -u --target minor 与 npm install 先升次/补丁并跑 npm test;主版本用 ncu -u --filter [package-name] 或 ncu -u 后 npm install。
- 应用迁移:可用时运行 codemod,如 npx react-codemod、npx jest-codemods、npx @next/codemod;否则手动改代码与配置。
- 验证:npm test、npm run build、npm run lint,并汇总升级包数、处理的破坏性变更、修改文件与测试结果。
限制与错误处理:ncu 缺失时提示 npm install -g npm-check-updates;网络检索失败可重试或提供手动链接并警告研究可能不完整;测试失败则停止升级,建议回滚 git checkout package.json package-lock.json && npm install;找不到官方迁移文档时标注研究不完整。