webpack 編譯模塊的基本流程:
1.調(diào)用webpack函數(shù)接收config配置信息毁涉,并初始化compiler炼邀,在此期間會(huì)apply所有 webpack 內(nèi)置的插件;
2.調(diào)用compiler.run進(jìn)入模塊編譯階段趁仙;
3.每一次新的編譯都會(huì)實(shí)例化一個(gè)compilation對(duì)象桶癣,記錄本次編譯的基本信息表箭;
4.進(jìn)入make階段厦章,即觸發(fā)compilation.hooks.make鉤子镇匀,從entry為入口:
a. 調(diào)用合適的loader對(duì)模塊源碼預(yù)處理,轉(zhuǎn)換為標(biāo)準(zhǔn)的JS模塊袜啃;
b. 調(diào)用第三方插件acorn對(duì)標(biāo)準(zhǔn)JS模塊進(jìn)行分析汗侵,收集模塊依賴項(xiàng)。同時(shí)也會(huì)繼續(xù)遞歸每個(gè)依賴項(xiàng)群发,收集依賴項(xiàng)的依賴項(xiàng)信息晰韵,不斷遞歸下去;最終會(huì)得到一顆依賴樹??熟妓;
5.最后調(diào)用compilation.seal render 模塊雪猪,整合各個(gè)依賴項(xiàng),最后輸出一個(gè)或多個(gè)chunk起愈;
以下為簡(jiǎn)單的時(shí)序圖: