全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-25 6 分钟 ✍️ juanwangdev

peerDependencies对等依赖

peerDependencies用于声明包期望宿主环境提供的依赖,安装时不会自动下载,而是要求宿主项目自行安装匹配版本。

peerDependencies对等依赖

基本语法

JSON
{
  "name": "my-ui-lib",
  "peerDependencies": {
    "react": ">=17.0.0",
    "vue": "^3.0.0"
  }
}

核心行为

  • npm v7+:未安装peer依赖会自动安装,版本冲突会报错
  • npm v3-v6:仅发出警告,不自动安装
  • yarn v1:仅警告;yarn v2+:默认自动安装

典型使用场景

  1. 插件模式:UI组件库依赖宿主提供的React
  2. 构建工具插件:ESLint插件依赖宿主的ESLint
  3. 框架生态:Vuex依赖宿主的Vue
JSON
{
  "name": "eslint-plugin-react",
  "peerDependencies": {
    "eslint": "^8.0.0"
  }
}

peerDependenciesMeta可选标记

JSON
{
  "peerDependencies": {
    "webpack": "^5.0.0",
    "vite": "^4.0.0"
  },
  "peerDependenciesMeta": {
    "webpack": { "optional": true },
    "vite": { "optional": true }
  }
}

optional为true时,宿主未安装该peer依赖不会报错,适用于支持多种构建工具的库。

与dependencies的区别

类型是否自动安装适用场景
dependencies包自身运行所需
peerDependencies否(npm7+可能自动)宿主应提供的共享依赖

peerDependencies不要滥用。仅当包需要与宿主共享同一实例时才使用,否则用dependencies。

要点总结

  • peerDependencies声明宿主应提供的依赖,避免重复实例
  • npm v7+会自动安装peer依赖,版本冲突会报错
  • peerDependenciesMeta.optional标记可选peer依赖
  • 插件、组件库、框架生态是典型使用场景
  • 非共享依赖场景应使用dependencies而非peerDependencies
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 NPM常见问题排查与修复
下一篇 → npm ci与overrides覆盖
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码