起因
最近公司搞安全测试,大肆扫描第三方依赖并且升级。我负责的项目中被扫出了一个关于moment的版本升级。
升个级还不简单,我直接看package.json文件:
woc,没这个依赖啊。又看了看lock文件:
这个东西是其他依赖的dependencies呀
再一看项目里,moment用的好好的:
这不妥妥幽灵依赖嘛,我这pnpm是假的?
排查与结果
我新拉了一个项目,确认不是我pnpm的问题
然后发现了modules.yaml文件:
这里面的testa是private,再看看出问题的moment,果然是public
然后发现了这个:pnpm.io/npmrc#shame… 控制是否可以访问未声明的依赖项。
在新项目中测试,确实符合预期
裂开了,合着是因为之前npm升级的时候,不想处理幽灵依赖了,直接全给暴露出来了。不愧是前人蹲坑,后人吃s。我也懒得改了,直接在lock中删掉moment,再次install, 搞定嘿嘿。