如何把 package.json 所有依赖更新到最新版本

用 npm-check-updates:npx npm-check-updates -u 更新 package.json 版本号到最新,再 npm install 安装。跨大版本升级可能破坏兼容性,务必分批升级+跑测试。附 npm update 与 ncu 的区别。

最佳实践
应用程序模块协作插画

一句话回答:用 npm-check-updates 工具:npx npm-check-updates -u 把 package.json 里所有依赖的版本号改成最新(包括跨大版本),然后 npm install 实际安装。内置的 npm update 只能在 semver 范围内升(^1.2.3 最多升到 1.x 最新),能否跨主版本取决于原范围(如 *、>=1.0.0 可以跨主版本)。要突破原范围,需要修改声明。

标准流程

npx npm-check-updates              # 先 dry-run:列出哪些包有新版本(不改文件)
npx npm-check-updates -u           # 确认后升级 package.json
npm install          # 安装新版本并更新 lock
npm test             # 跑测试验证没炸

npx 会按需获取并执行包代码,请核对包名、来源及版本,团队可固定经过审核的版本。这里必须使用 npx npm-check-updates;不要写成 npx ncu,后者可能下载同名的其他包。仅在已明确安装 npm-check-updates 并确认命令来源后,才使用它提供的 ncu 简写。默认目标是 npm latest dist-tag,不等于数值最大的所有预发布版本。

ncu 实用参数

npx npm-check-updates --target minor -u     # 只升到最新次版本(保守)
npx npm-check-updates --target patch -u     # 只升补丁(仍需测试)
npx npm-check-updates -u react vue          # 只升指定包
npx npm-check-updates -x webpack            # 排除某个包
npx npm-check-updates --interactive         # 逐个确认(推荐大升级时用)

稳妥的升级策略

  1. 分批升:先 patch(--target patch)→ 再 minor → 最后 major 逐个来
  2. major 单独审:大版本必看 CHANGELOG 的 Breaking Changes(React 18→19、ESLint 8→9 这种都要改代码)
  3. 升级后必须:跑测试 + 构建 + 手动过一遍核心流程
  4. 一次别升太多:出问题时分批提交便于二分定位

npm update 与 ncu 的区别

npm update ncu -u
升补丁/次版本(范围内) ✅ ✅
跨主版本升级 取决于原 semver 范围 默认可改写到 latest,需审兼容性
修改 package.json 默认不更新直接依赖范围;--save 可更新 -u 修改范围,安装需另执行
风险 范围内也可能回归 跨主版本及运行时要求变化需重点检查

日常维护跑 npm outdated 看落后情况,npm update 做范围内升级;定期(如每季度)用 ncu 做大版本跟进。

常见问题(FAQ)

Q:升级后项目起不来了怎么办?

A:升级前先保存并审核当前工作状态,记录可恢复的提交。失败后核对差异,将依赖声明与锁文件一起恢复到该明确基线,再按锁文件安装(例如 npm ci);不要覆盖无关的未提交修改。之后用 npx npm-check-updates --interactive 分批升级。

Q:peerDependencies 冲突报错?

A:新版依赖对宿主要求变了(如插件要求 eslint>=9 而你是 8)。按报错提示升级宿主包,或暂缓升级该插件。不要默认用 --legacy-peer-deps 掩盖约束冲突;同时核对 Node/npm 的 engines 要求和库的迁移说明。

Q:monorepo 里怎么用?

A:npm workspaces 项目用 npx npm-check-updates -u --workspaces 处理工作区包;如需连根 package.json 一起更新,按工具文档加 --root,并先预览范围;或逐包执行保持各自节奏。

核查依据

本文依据官方文档核对,示例未在实际业务环境运行;上线前请按部署版本、权限与数据范围验证。


延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台