webpack 关于依赖提取的 build 差异

2022-02-17 16:10:14 +08:00
 zy0829

文件 A.js 引入了依赖 dep.js ,然后又动态加载了 import('bjs, cjs') , 这两个文件 bjs cjs 也都引入了 dep.js

当我配置了 splitChunks, chunks: all, minChunks:2 的情况下 dep.js 并没有被单独提取出来

如果 A.js 没有引入依赖 dep.js 编译后 dep.js 就能被单独提取出来,这是为啥

986 次点击
所在节点    webpack
7 条回复
murmur
2022-02-17 16:15:19 +08:00
A-B-C-dep ,这些东西被打到一起,没问题啊,你是让他自由打包还是用 webpackChunkName 手动分包的
zy0829
2022-02-17 16:54:50 +08:00
没打到一起 打包后输出三个文件,a b c, 但是 dep 没单独提出来
zy0829
2022-02-17 17:01:39 +08:00
@murmur 我疑问的是我配置了 splitChunksPlugin 之后 按理来说 dep.js 被 b c 都应用了 会命中这个缓存组规则 会被单提取出来, 但是并没有, 原因就是因为 A.js 中引入了 dep.js , 但是为啥就不生效了
murmur
2022-02-17 17:03:04 +08:00
@zy0829 你用 webpack analyzer 看一下,dep 在哪里,如果是 node_modules 是不是应该进 vendor
我以前也试过,试图让 node 依赖直接出来,结果是出来了,结果 tree shake 没了,大的一塌糊涂,所以我放弃了
murmur
2022-02-17 17:03:54 +08:00
webpack 新版我记得可以通过配置让哪个依赖强行单独成包,3 应该是不行,我们用的就是 2 、3 多
murmur
2022-02-17 17:05:27 +08:00
https://webpack.js.org/guides/code-splitting/#entry-dependencies

这个 dependOn 和 shared 是不是你要的东西
zy0829
2022-02-17 17:08:03 +08:00
@murmur 并不是哈哈, 我再看看吧 感谢哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX