一句话:
ncu看有哪些能升,ncu -u写回 package.json——大版本升级记得分组、测完再合。
写在前面
手动对照 npm 官网逐个改 package.json 既慢又易漏。 npm-check-updates(命令 ncu) 可以一次性列出所有可升级依赖,并可选交互式按 Patch / Minor / Major 分组确认。适合季度维护、安全补丁批量升级场景。
核心内容
安装
bash
npm install -g npm-check-updates
查看可更新依赖
在项目根目录执行:
bash
ncu
输出示例(当前版本 → 最新版本):
vue ^3.2.31 → ^3.5.11
vite ^2.8.1 → ^5.4.0
typescript ^4.5.5 → ^5.6.3
eslint ^8.7.0 → ^9.12.0
此时仅预览,尚未修改任何文件。
写入 package.json
bash
ncu -u
然后重装依赖:
bash
rimraf node_modules
npm install
# 或 pnpm install / yarn
建议升级后跑一遍 npm run build、npm test 或关键 E2E。
交互式分组升级(推荐)
bash
ncu --interactive --format group
按 Patch(补丁)→ Minor(次版本)→ Major(主版本) 分组勾选,避免一次升到 breaking 版本:
? Choose which packages to update »
Space: 切换选中
a: 全选/取消
Enter: 确认升级
Patch Backwards-compatible bug fixes
❯ (*) dayjs ^1.11.10 → ^1.11.13
Minor Backwards-compatible features
(*) nuxt ^3.10.3 → ^3.13.2
Major Potentially breaking API changes
( ) eslint ^8.57.0 → ^9.12.0
Major 默认不选,需人工评估 changelog。
常用参数
| 参数 | 说明 |
|---|---|
ncu -u --target minor |
只升到最新 minor,跳过 major |
ncu -u --target patch |
只应用补丁版本 |
ncu --filter vue,vite |
只检查指定包 |
ncu --dep prod |
仅生产依赖 |
ncu --dep dev |
仅开发依赖 |
踩坑
ncu -u不会自动改 lockfile 里的解析树:必须重新install。- Major 升级常伴随配置变更(如 ESLint 9 flat config、Vite 5),不要无脑
-u全选。 - Monorepo 需在子包目录分别执行,或使用
-ws(workspaces)相关选项。 - peerDependencies 冲突 升级后可能需
--legacy-peer-deps,根因仍是版本不兼容。 - 生产环境建议:先 minor/patch,major 单独开分支 测完再合。
小结
- 工作流:
ncu预览 →ncu -i --format group或ncu -u→ 删 node_modules → 重装 → 测试。 - Major 版本手动评估;日常安全更新优先 Patch / Minor。
- 全局工具:
npm install -g npm-check-updates。


全部评论(0)