用 npm ls --depth=0 快速看顶层依赖

16 次浏览2 条回复

有时候接手一个 Node 项目,只想先看项目直接装了哪些包,不太想被一长串间接依赖刷屏。可以用 npm 自带的 ls 限一下深度。

环境:Node.js 16+,npm 8+,在项目根目录执行:

npm ls --depth=0

它主要列出当前项目的顶层依赖,顺便也能看到版本号。如果只想看生产依赖,可以加:

npm ls --omit=dev --depth=0

这个命令只读,不会改 package.json 或 lockfile。排查“这个包到底是不是直接依赖”时,先跑一下还挺省事。

这个拿来扫一眼挺快的。补一个小用法:如果想在脚本里处理结果,可以加 --json:

npm ls --depth=0 --json

不过依赖有 peer 问题时输出可能会带 error 字段,脚本里别只按退出码 0 来写会稳一点。

还有个容易踩的小点:npm ls 默认会把缺失依赖、peer 依赖不满足这类问题也标出来。

所以它不只是“看列表”,接手老项目时顺手跑一下,能先发现 node_modules 跟 lockfile/package.json 有没有对不上。只想看当前项目本身的话,--depth=0 确实刚好够用。