在webpack中创建libs时应该是什么对等依赖?

时间:2017-04-26 13:30:52

标签: reactjs npm webpack package.json

我们正在创建可重复使用的反应组件。每个组件都包装为带有webpack的npm lib。 是否每个lib都将其依赖项标记为对等依赖项,并期望应用程序在使用它时安装它们?或者,它们应该是常规依赖吗?在那种情况下 - 我们冒着重复节点模块的风险吗? 一个很好的例子就是反应 - 1.我们作为lib包装的组件需要做出反应 2.使用此lib的应用程序需要做出反应 应该是lib中的对等依赖还是依赖?

2 个答案:

答案 0 :(得分:2)

React / ReactDOM肯定需要是对等依赖项。如果在依赖项中设置并且用户安装的版本与您指定的版本不同,则可能会发生错误。

他们的项目最终会安装两个不同版本的react。这可能会破坏构建工具,代码编辑器并自我反应。

答案 1 :(得分:2)

这取决于。对于类似反应的东西,你几乎总是希望它是同伴依赖。这是因为

  • 如果你从另一个包中导入一个组件,你几乎必须自己做出反应来渲染它
  • 加载两份反应副本会导致错误。

因此,在这种情况下,您肯定希望使用对等依赖项来保护自己不会在捆绑包中拥有多个依赖项副本。

对于其他依赖项,可能没有必要。例如,如果你有一个依赖项和你的应用程序都依赖于实用程序功能包,那么两者都可以将它作为常规依赖项。假设您使用^指定依赖项,您的包管理器(npm,yarn)将处理重复数据删除,因此在构建时最终得到两个副本的唯一方法是它们是否依赖于不同的semver主要版本。如果您的应用和您的依赖项独立使用公共包,那应该没问题。

所以基本上,你想在自己决定做同伴依赖时要问自己的问题是'我是否需要阻止这个包的两个不同版本(使它成为对等依赖),或者是它好的,如果有(正常依赖)?'