Peer Dependency 一些使用场景的归纳总结

Posted JerryWang汪子熙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Peer Dependency 一些使用场景的归纳总结相关的知识,希望对你有一定的参考价值。


在每个基于 Node.js 的 Web 应用程序项目中,我们都有一个名为 package.json 的文件。该文件包含有关项目的所有相关数据,即元数据。 package.json 中能够定义 dependency,devDependency 和 Peer Dependency 三种不同的依赖类型。

本文概括 Peer Dependency 的一些常见的使用场景。

  • Babel plugins:在 Babel 插件的开发里,需要将 Babel 自身定义成 peer dependency.
  • Express middleware packages:这是一个典型的需要使用对等依赖项的 NPM 模块开发场景。中间件包的开发者希望将 express 声明为依赖项,而不是一个​​硬​​依赖项。否则,每个中间件 package 的每次安装,都会将整个 express 安装到 node_modules 文件夹下。
  • 如果正在构建微前端,需要确定哪些依赖项是外部的(因此它们不会被 bundled)而哪些不是。对等依赖关系可能是处理此问题的一个可选方案。
    整个框架。
  • Bit Components:如果正在编写和发布前端组件,例如在 Bit 上共享 React 组件时。 在这种情况下,可以将 React 声明为组件的对等依赖项,其语义是,开发人员希望宿主项目具有 peer Dependency 指定的正确版本。

看个实际的例子,一个能够重复点击的按钮:

Peer

安装完毕后,观察其 package.json 里定义的 peer Dependency:

Peer

在这个 package.json 文件里,这个包没有定义任何的直接依赖关系,即使它是在 React 之上工作的。 我们确保诸如 React 和 React-dom 之类的东西是必需的(required),只是没有安装(not installed)。这就是 NPM 的对等依赖关系所想表达的语义。

鉴于基于 plugin 的架构的灵活性,许多库都在利用它,允许开发人员根据他们的需要,有机地扩展框架的功能。 这使得任何有兴趣为这些框架开发新功能的开发人员,都有必要掌握 Peer Dependency 的正确用法。


以上是关于Peer Dependency 一些使用场景的归纳总结的主要内容,如果未能解决你的问题,请参考以下文章

UNMET PEER DEPENDENCY react-router@3.0.0

xdl@42.0.0" has unmet peer dependency "react@16.0.0-alpha.12 的解决方案

redis——应用场景归纳,redis的用途

Netty 出现 Connection reset by peer 异常的几个原因

npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree

npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree