共同依赖
Common Dependency
我有一个库 A,依赖于库 C 版本 "X"
库 A 也依赖于库 B
库 B 依赖于库 C 版本 "Y"
关于用webpack打包A库,会打包C库的哪个版本? X 和 Y 都会吗?
决定问题答案的逻辑顺序是动态的,因此它可能取决于许多因素。然而,一般来说它是这样的:
您的包管理器(NPM、Yarn 等)将是第一个介入的对象。将遍历依赖树,所有模块将根据相关方式分布在不同级别,显然还考虑了每个包允许的版本。这一步可能已经删除了重复的依赖(即使在不同的地方需要两个不同的版本。如果找到一个共同的有效版本,将使用它来代替)。
如果没有找到共同的有效版本,那么您将在树的不同级别拥有相同包的不同版本(它们将具有相同的名称,但路径不同),随后 Webpack 会将它们视为不同的模块。
但是,这些不同模块的共同依赖项将根据 Webpack 配置进行重复数据删除。
长话短说,请确保有许多算法层的唯一目的是优化您的最终捆绑包。库 C 版本 "X" 和库 C 版本 "Y" 将不会同时存在,除非绝对必要,并且不会重复仍然常见的依赖项。
我有一个库 A,依赖于库 C 版本 "X"
库 A 也依赖于库 B
库 B 依赖于库 C 版本 "Y"
关于用webpack打包A库,会打包C库的哪个版本? X 和 Y 都会吗?
决定问题答案的逻辑顺序是动态的,因此它可能取决于许多因素。然而,一般来说它是这样的:
您的包管理器(NPM、Yarn 等)将是第一个介入的对象。将遍历依赖树,所有模块将根据相关方式分布在不同级别,显然还考虑了每个包允许的版本。这一步可能已经删除了重复的依赖(即使在不同的地方需要两个不同的版本。如果找到一个共同的有效版本,将使用它来代替)。
如果没有找到共同的有效版本,那么您将在树的不同级别拥有相同包的不同版本(它们将具有相同的名称,但路径不同),随后 Webpack 会将它们视为不同的模块。
但是,这些不同模块的共同依赖项将根据 Webpack 配置进行重复数据删除。
长话短说,请确保有许多算法层的唯一目的是优化您的最终捆绑包。库 C 版本 "X" 和库 C 版本 "Y" 将不会同时存在,除非绝对必要,并且不会重复仍然常见的依赖项。