peerDependencies

中英双语

在某些情况下,你想表达你的包与宿主工具或库的兼容性,而不一定要做这个宿主的 require。这通常被称为插件。值得注意的是,您的模块可能会暴露主机文档所期望和指定的特定接口。

例如:

{
  "name": "tea-latte",
  "version": "1.3.5",
  "peerDependencies": {
    "tea": "2.x"
  }
}

这确保您的包 tea-latte 可以连同 与主机包 tea 的第二个主要版本一起安装。npm install tea-latte 可能会产生以下依赖关系图:

├── tea-latte@1.3.5
└── tea@2.2.0

在 npm 版本 3 到 6 中,peerDependencies 不会自动安装,如果在树中发现无效版本的对等依赖项,则会发出警告。从 npm v7 开始,默认安装 peerDependencies。

如果无法正确解析树,则尝试安装另一个具有冲突要求的插件可能会导致错误。出于这个原因,请确保您的插件要求尽可能广泛,而不是将其锁定到特定的补丁版本。

假设主机符合 semver,只有主机包主要版本的更改会破坏您的插件。因此,如果您使用过每个 1.x 版本的主机包,请使用 "^1.0""1.x" 来表达这一点。如果您依赖 1.5.2 中引入的功能,请使用 "^1.5.2"