打包后同一个库出现了两份,体积多了好几百 KB,npm ls 显示那个包挂着两个不同版本。日志里能对上时间点,这种反而好排。

依赖树里两个包对同一库要求不同主版本,npm 无法统一提升到顶层,只能在各自目录下再装一份副本。这一点先确认清楚,后面就不用反复试。

npm ls lodash
npm dedupe
npm ls lodash --all

围绕「依赖提升重复包」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

处理上按这个顺序:用 npm ls 包名 定位谁在要旧版本;把上层依赖升到兼容版本;跑一次 dedupe 合并重复项。

结果对不对很好判断,npm ls 里该包只剩一个版本,构建产物体积明显下降。

作者 9823189