如何检查并更新过期的 npm 包
检查过期包用 npm outdated(显示当前版/想要版/最新版三列),更新到 semver 允许范围用 npm update,跨大版本升级用 npx npm-check-updates(ncu -u)后 npm install。更新后务必跑测试验证。
检查用 npm outdated,更新用 npm update:前者列出所有过期包的当前版本、package.json 允许的最新版本(wanted)和绝对最新版本(latest);后者把包升级到 semver 允许范围内的最新版。想跨大版本升级,用 npx npm-check-updates(ncu)改写 package.json 后再 npm install。
三步流程
npm outdated # 1. 看哪些包过期
npm update # 2. 升级到 ^ 范围允许的最新版
npm test # 3. 跑测试确认没坏
npm outdated 输出示例:
Package Current Wanted Latest
eslint 8.5.0 8.57.0 9.10.0
express 4.17.1 4.21.0 5.0.0
npm update 只会升到 wanted 列(不越过大版本),所以是安全的增量升级。
跨大版本升级
npx npm-check-updates # 预览可升级项
npx npm-check-updates -u # 改写 package.json 版本号
npm install # 按新版本安装
npm test # 验证
大版本常带破坏性变更,升级前阅读对应包的 CHANGELOG 和迁移指南,逐个升、分批验证比一次全升更稳。
批量体检工具
npm audit:安全漏洞扫描,npm audit fix自动修复;npm-check(npx npm-check):交互式选择要更新的包;- CI 里可加
npm outdated周报或接入 Dependabot/Renovate 自动提 PR。
常见问题(FAQ)
Q:npm update 为什么不升到最新版?
设计如此——它遵守 package.json 里的 semver 范围(^4.17.1 只允许 4.x)。这是防止大版本破坏的保护机制。
Q:更新后 package-lock.json 会变吗?
会,npm update/install 都会同步锁文件。锁文件必须提交到 git,保证团队与 CI 装到一致版本。
Q:生产环境怎么安全地升级依赖?
流程:分支上升级 → 全量测试 → 预发环境灰度 → 观察错误率 → 全量。升级后密切监控应用错误率与性能指标,出现异常立即回滚锁文件重新部署。