【103】Peer Dependencies (同版本依赖)

原文地址:https://blog.domenic.me/peer-dependencies/

nodejs官网收录了这篇文章,地址是https://nodejs.org/en/blog/npm/peer-dependencies/

作者是 Domenic Denicola ,就职于谷歌Chrome团队。github 上npm开源项目的参与者。

在本文中我把 Peer Dependencies 翻译成了同版本依赖。peer 字典中,除了“仔细看”的意思外,还有“(官阶、等级、地位或功绩)同等的人”的意思。这里结合上下文,应该是版本号相同的意思,所以翻译成同版本依赖。

下面是正文内容:

npm 作为一款包管理器来说,是很优秀的。特别值得一提的是,它可以把子依赖处理得非常好。假如我的包依赖于两个模块:2号版本的 request 和 some-other-library (为了方便举例子,假设另一个模块的名字叫some-other-library),同时 some-other-library 又依赖于 1 号版本的 request ,产生的依赖图看起来像这样:

├── request@2.12.0
└─┬ some-other-library@1.2.3
  └── request@1.9.9

一般来讲,这个结果是非常好的:现在 some-other-library 有了能供它调用的 request 1 号版本的副本,同时不会干扰我的包依赖的request 2号版本的副本。每个人的代码都可以正常工作。

难题:插件

然而,有一个用例会让上文提及的处理方案行不通:插件。即使插件包不一定直接使用宿主包,插件包也往往意味着会被其它的宿主包所用。在 Node.js 开发包生态中,已经有了许多这种模板的例子了:

  • Grunt plugins
  • Chai plugins
  • Levelup plugins
  • Express middleware
  • Winston transports

即使你不精通哪些用例,你也一定能从过去当客户端开发者的时候回忆起 jQuery 插件:你放进页面中的

你可能感兴趣的:(前端,nodejs)