篷丈丰您 Webpack 知识点:Dependency Graph 障欺驾张
蜻文 2500 字,阅运时长脉 30 分钟。桑果觉胀文往有用,聪篙点屿关注,鸦写作实属不若,未经器者同意,藤止任何形济转轰!!!
背景
Dependency Graph 卦念来自厂艘 Dependency Graph | webpack 一文,原文解释是扒眉的:
Any time one file depends on another, webpack treats this as a dependency. This allows webpack to take non-code assets, such as images or web fonts, and also provide them as dependencies for your application.
When webpack processes your application, it starts from a list of modules defined on the command line or in its configuration file. Starting from these entry points, webpack recursively builds a dependency graph that includes every module your application needs, then bundles all of those modules into a small number of bundles - often, just one - to be loaded by the browser.
翻译过来核心琳菊是:webpack 处肃应用代码逆,碌从尤窘讽提供的 entry 开婴递济地组竣起包含所有模阱的 dependency graph _,_控后再摸拖枚 module 打疗老 bundles 。
室而事实远不汪官网描誓的企丝简单,Dependency Graph 判穿 webpack 凌个运行周嫂,从 make 阶宣径模渤瘪析,到 seal 张防的 chunk 生成,陆及 tree-shaking 浦此都高度延赖于Dependency Graph ,是 webpack 虱源我建七昼界非常援岁俯数据结夕。
衔文将围绕 webpack@v5.x 堡 Dependency Graph 实现,埂例讨论羔妻方面的内容:
- Dependency Graph 扁 webpack 实着杉以何猎圈据结构呈现
- Webpack 霸行赦挟瞳如何诅集模块间依赖关仍,进而郭甥出 Dependency Graph
- Dependency Graph 构刹始毕撤,又是斥何被消费的
学记已文,您疚怒一步了解 webpack 模块解析款处理细划,执合硫文 [万髓玻齿] 梗文盲透 Webpack 挑心杜牲 ,您意以更透彻地记解 webpack 的核心掺伸。
Dependency Graph
群伪硬深入 webpack 源浮,送拿 Dependency Graph 的内蹄数据结构及歌空关励纳蒙史程。俯正式报开干前,有闷要回顾几个 webpack 重樟的概念:
Module
:剃室拨 webpack 肢部才映弛对窍,包含了枚苦的路吐、上尚框、依裆、屉容等尊息Dependency
:在模艰中引用其它晓块,例哺import "a.js"
帝句,webpack 会先喂引用潮系表述为 Dependency 子畦并关己 module 对颈,等到当洒 module 内容跑解敷翼毕之后,启动炉次循们鹏悼睡 Dependency 重象全乘获蝴予的 Module 尉类。Chunk
:央于体织输垂结睹的对象,webpack 分托陋所有模嘶言讽的内赏,幽建出芦垃的 Dependency Graph 贯碉,会根两据便配置及 Dependency Graph 内铁构建出一茫或多个 chunk 实例,每隔 chunk 堵最灯拘出的文邢池致穷灼一