对等依赖 (peers) 是如何被处理的
pnpm 的最佳特性之一是,在一个项目中,软件包的特定版本将始终具有同一组依赖项。 不过,这个规则 有一个例外 - 具有对等依赖 (peer dependencies)的软件包。
对等依赖会从依赖图中更高的已安装的依赖项中解析,因为它们与父级共享相同的版本。 这意味着,如果 foo@1.0.0 有两个peers依赖(bar@^1 和 baz@^1),那么它可能在一个项目中有多个不同的依赖项集合。
- foo-parent-1
  - bar@1.0.0
  - baz@1.0.0
  - foo@1.0.0
- foo-parent-2
  - bar@1.0.0
  - baz@1.1.0
  - foo@1.0.0
在上面的示例中, foo@1.0.0 已安装在 foo-parent-1 和 foo-parent-2 中。 这两个包都有依赖包 baz 和 bar, 但是它们却依赖着不同版本的 baz。 因此, foo@1.0.0 有两组不同的依赖项:一组具有 baz@1.0.0 ,另一组具有 baz@1.1.0。 若要支持这些用例,pnpm 必须有几组不同的依赖项,就去硬链接几次 foo@1.0.0。