pnpm也存在幽灵依赖?

1,252 阅读1分钟

起因

最近公司搞安全测试,大肆扫描第三方依赖并且升级。我负责的项目中被扫出了一个关于moment的版本升级。

升个级还不简单,我直接看package.json文件:

image.png

woc,没这个依赖啊。又看了看lock文件:

image.png

这个东西是其他依赖的dependencies

再一看项目里,moment用的好好的:

image.png

这不妥妥幽灵依赖嘛,我这pnpm是假的?

排查与结果

我新拉了一个项目,确认不是我pnpm的问题

image.png

然后发现了modules.yaml文件:

image.png

这里面的testaprivate,再看看出问题的moment,果然是public

image.png

然后发现了这个:pnpm.io/npmrc#shame… 控制是否可以访问未声明的依赖项。

在新项目中测试,确实符合预期

image.png

裂开了,合着是因为之前npm升级的时候,不想处理幽灵依赖了,直接全给暴露出来了。不愧是前人蹲坑,后人吃s。我也懒得改了,直接在lock中删掉moment,再次install, 搞定嘿嘿。