【问题标题】:Common Dependency共同依赖
【发布时间】:2020-06-29 08:09:51
【问题描述】:

我有一个库 A,依赖于库 C 版本“X”

库 A 也依赖库 B

库 B 依赖于库 C 版本“Y”

关于使用 webpack 打包库 A,会打包哪个版本的库 C? X 和 Y 都可以吗?

【问题讨论】:

    标签: reactjs webpack package npm-install bundling-and-minification


    【解决方案1】:

    决定问题答案的逻辑顺序是动态的,因此它可能取决于许多因素。但是,一般来说它是这样的:

    您的包管理器(NPM、Yarn 等)将是第一个干预的对象。将遍历依赖关系树,所有模块将根据关联方式分布在不同的级别,显然还要考虑每个包允许的版本。这一步可能已经删除了重复的依赖(即使在不同的地方需要两个不同的版本。如果找到一个共同的有效版本,就会被使用)。

    如果没有找到共同的有效版本,那么在树的不同层级中你将拥有同一个包的不同版本(它们将具有相同的名称,但路径不同),随后 Webpack 会将它们视为不同的模块。

    然而,这些现在不同模块的共同依赖项将根据 Webpack 配置进行重复数据删除。

    长话短说,请确保有许多层算法仅用于优化最终捆绑包。除非绝对必要,否则不会同时存在库 C 版本“X”和库 C 版本“Y”,并且不会重复常见的依赖关系。

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多