学习呦
同等依赖+peerDepencidency
同等依赖 PeerDepencidencies
现在我有一个自己开发的项目,根目录package.json里面要引入一个我需要的react版本
"dependencies": { |
之后这个项目我还要自己开发一个插件(上传到npm公开仓库,可以通过npm等命令安装的那种)。里面也要依赖一个react版本
"react": "^18.2.0" |
如果直接让我们开发的这个插件安装他需要的版本,最后打包后可能会引入两份react
那如果我们的插件依赖的也是"react": "^18.0.0",就会版本冲突了
解决问题
我们开发的插件可以使用peerDependencies选项
"peerDependencies": { |
设置了这个选项,包管理器不会主动安装这个插件需要的这俩依赖,而是看宿主环境的dependencies的选项要求的相同的依赖的版本,正好发现可以安装18以上的版本,就会安装一个最佳兼容的版本18.2.0
概念
一个包(或模块)依赖的包不同于宿主环境所依赖的包(或模块),这个包(或模块)的依赖就是同等依赖
说明
概念挺抽象的,但解决的问题很重要。对于插件、组件库、工具这类项目来说,要让其他人引用你的工具、组件,但不能自己又完全依赖于一个版本,要依赖其他人项目提供的版本,还要确保最大的兼容性