peerDependencies、devDependencies和dependencies的区别

372 阅读1分钟

小伙伴们如果看过诸如vue、react这种大型项目的代码仓库,应该有看到过package.json中有个peerDependencies字段,那么为什么是用peerDependencies而不是dependencies或devDependencies呢?下面说说三者的区别。

devDependencies

先看看devDependencies,这个是说我们开发环境依赖,不会打包到生产环境,对线上环境不会产生影响

dependencies

这个是说我们要用到生产环境的依赖,没有这些会影响到项目的稳定运行

peerDependencies

这个一般如果你不是一些库的作者,基本不用用到,那到底和上面两个有什么区别呢?

举个例子,就像你去洗车,前提你得有个车。就是说它的使用必须是依赖宿主环境已经安装好它需要的库,比如react-dom-bindings的peerDependencies是react18.2

image.png

如果装17版本可以吗?不行,他会报个警告。所以必须是18.2及以上,主版本号不能大于18。(ps:^的意思是大于等于当前版本,小于主版本号)。其次像这种大型代码仓库管理都是使用monorepo的管理方式。什么是monorepo呢?有时间再来聊聊。