学习呦
14 10月 2025 2 min read

同等依赖+peerDepencidency

Written by 米豆

同等依赖 PeerDepencidencies

现在我有一个自己开发的项目,根目录package.json里面要引入一个我需要的react版本

"dependencies": {
"react": "^18.0.0"
}

之后这个项目我还要自己开发一个插件(上传到npm公开仓库,可以通过npm等命令安装的那种)。里面也要依赖一个react版本

"react": "^18.2.0"

如果直接让我们开发的这个插件安装他需要的版本,最后打包后可能会引入两份react
那如果我们的插件依赖的也是"react": "^18.0.0",就会版本冲突了

解决问题

我们开发的插件可以使用peerDependencies选项

"peerDependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0"
}

设置了这个选项,包管理器不会主动安装这个插件需要的这俩依赖,而是看宿主环境的dependencies的选项要求的相同的依赖的版本,正好发现可以安装18以上的版本,就会安装一个最佳兼容的版本18.2.0

概念

一个包(或模块)依赖的包不同于宿主环境所依赖的包(或模块),这个包(或模块)的依赖就是同等依赖

说明

概念挺抽象的,但解决的问题很重要。对于插件、组件库、工具这类项目来说,要让其他人引用你的工具、组件,但不能自己又完全依赖于一个版本,要依赖其他人项目提供的版本,还要确保最大的兼容性

↑