今天我出于强迫症,决定消除安装依赖时出现的"unmet peer dependency"警告,经过我查询资料发现,这其实是npm6.X及之前版本没注意到的问题,
1.peerDependency
当我们安装的插件A引用了其他依赖项B时(称之为peerDependency对等依赖),同时A为了功能的稳定,限定了依赖B的版本(一般是低版本);
2.webpack的hoist(提升)机制
但是我在自己的项目中安装A的同时也需要单独安装B,而且对B版本要求较高,那么问题就来了(webpack存在“对等依赖”提升到最顶层的hoist机制,为了减少包的体积),这就会导致包A去引用高版本的B,控制台报错;
3.yarn替换npm
而yarn就很好的解决了该问题,不会出现依赖提升,只是会在控制台出现警告"XXX" has unmet peer dependency "XXX",但是警告看着也不爽,那么就只好手动修改A的版本,如果A包的作者并没有升级包的依赖,也就没办法了;
4.npm7.x
npm在7.x之后修复了该问题,如果我们需要用npm安装包及包的对等依赖,我们就可以使用7.x版本之后的版本。 如今我是统一使用的yarn。