npm outdated 命令可直接列出项目过期依赖,输出包含 package、current、wanted、latest 四列的表格,其中 latest 为 npm registry 上该包绝对最新版(可能含不兼容变更),current 为本地安装或 package.json 锁定版本,wanted 为符合语义化版本范围的最高兼容版。

npm outdated 命令能直接列出过期依赖
在项目根目录打开终端(确保已 cd 进入含 package.json 的文件夹),运行:
npm outdated
它会输出表格,包含 Package、Current、Wanted、Latest 四列。其中 Latest 就是该包在 npm registry 上的最新发布版本号。
-
Current是你node_modules里实际安装的版本(或package.json中锁定的版本) -
Wanted是符合你package.json中语义化版本范围(如^1.2.0)的最高兼容版本 -
Latest不受你当前版本范围限制,是包作者发布的绝对最新版(可能含不兼容变更)
VSCode 插件可图形化查看,但需注意数据来源
安装插件 Version Lens(作者:pflannery)后,它会在 package.json 的依赖行末尾自动显示当前版本和最新版本,例如:
"express": "^4.18.2" // 4.18.2 → 4.19.2
但要注意:
- 它默认只检查
Wanted版本(即语义化范围内的最新兼容版),不是Latest - 要看到真正的
Latest,需在 VSCode 设置中搜索versionLens.showLatestVersion,并设为true - 插件缓存更新有延迟,刚发版可能不会立刻显示,此时仍以
npm outdated --all为准
npm view 命令查单个包的最新版最准
当你要确认某个特定包(比如 lodash)的 Latest 版本,且想绕过本地缓存时,用:
npm view lodash version
这会直连 npm registry,返回当前标记为 latest 的版本号。如果要看所有发布过的版本(含预发布版),加 --json:
npm view lodash versions --json
注意:
-
npm view <pkg> version</pkg>返回的是dist-tags.latest对应的版本,和npm outdated的Latest列一致 - 有些包会把
next或beta设为dist-tag,此时npm view <pkg> dist-tags</pkg>能看到全部标签及其对应版本
别忽略 peerDependencies 和 workspace 场景
npm outdated 默认不检查 peerDependencies,但很多库(如 React 生态组件)的兼容性就卡在这里。要强制检查,加 --peer 参数:
npm outdated --peer
如果是 pnpm / yarn workspaces 项目,npm outdated 只作用于当前子包。跨 workspace 查最新版得进每个子目录单独跑,或改用:
pnpm outdated --recursive
(前提是用 pnpm 管理)
真正容易被忽略的是:某些包的 Latest 版本可能是针对新 Node.js 主版本编译的(比如只支持 Node.js 20+),而你的项目还在用 Node.js 18 —— 此时强行升级会导致 require() 失败或 ERR_MODULE_NOT_FOUND。看版本号之前,先核对 engines.node 字段。











