王爭的算法訓練營(第5期)
5.webpack文件的解析與構(gòu)建
文件的解析與構(gòu)建是一個比較復雜的過程,在webpack源碼中主要依賴compiler和compilation兩個核心對象實現(xiàn)
compiler是一個全局單例,他負責把控整個webpack打包的構(gòu)建過程,compilation對象是每一次構(gòu)建的上下文對象,它包含了當次構(gòu)建所需要的所有信息,每次熱更新和重新構(gòu)建,compiler都會重新生成一個新的compilation對象,負責此次更新的構(gòu)建過程
而每個模塊間的依賴關(guān)系,則依賴于AST語法樹。每個模塊文件在通過Loader解析完成之后,會通過acorn庫生成模塊代碼的AST語法樹,通過語法樹就可以分析這個模塊是否還有依賴的模塊,進而繼續(xù)循環(huán)執(zhí)行下一個模塊的編譯解析。
最終Webpack打包出來的bundle文件是一個IIFE的執(zhí)行函數(shù)。
標簽: