如何查看已安装 npm 包的版本?
查看已装包版本用 npm list <包名>;查 registry 的 latest 标签版本用 npm view <包名> version;列出全部顶层依赖用 npm ls --depth=0,加 -g 看全局。本文汇总常用命令。
查本地已装版本:npm list <包名>。
常用命令速查
# 查看某个包的已安装版本(含依赖它的包)
npm list lodash
# 查看配置的 registry 上 latest dist-tag 指向的版本(不必是版本号最大的发布)
npm view lodash version
# 列出项目所有顶层依赖及版本(不展开子依赖)
npm ls --depth=0
# 查看全局安装的包
npm ls --depth=0 --global
# 查看某包的所有可用版本
npm view lodash versions
其他途径
看 package.json:dependencies/devDependencies 里记录的是版本范围(如 ^4.17.21),不是实际安装版本。
看 package-lock.json:packages 节点下记录的是锁定的精确版本,不证明磁盘 node_modules 当前与其一致。
代码里读(运行时):
const { version } = require('lodash/package.json');
console.log(version);
某些包的 exports 不允许读取 package.json,运行时 require 该子路径可能失败;此时用 npm ls 或包自身公开的版本 API。
常见问题(FAQ)
Q:npm list 报 "extraneous" 是什么意思?
包被装在了 node_modules 里但 package.json 没声明(手动 npm install 没加 --save 的历史遗留)。可以删掉重装,或 npm prune 清理。
Q:npm ls 输出大量 "unmet dependency"?
可能是缺失依赖、版本不满足或 peer dependency 冲突,先读具体条目。已审阅且与 package.json 一致的锁文件可用 npm ci 重建安装树;不要把删除锁文件当默认修复,它会改变解析结果。
Q:想看某个包为什么被安装(谁依赖它)?
npm explain <包名>(或 npm why <包名>)会列出依赖路径。