1.webpack核心概念:
entry:一個(gè)可執(zhí)行模塊或庫(kù)的入口文件。
chunk:多個(gè)文件組成的一個(gè)代碼塊,例如把一個(gè)可執(zhí)行模塊和它所有依賴的模塊組合和一個(gè)chunk這體現(xiàn)了webpack的打包機(jī)制。
loader:文件轉(zhuǎn)換器,例如把es6轉(zhuǎn)換為es5,scss轉(zhuǎn)換為css。
plugin:插件,用于擴(kuò)展webpack的功能,在webpack構(gòu)建生命周期的節(jié)點(diǎn)上加入擴(kuò)展hook為webpack加入功能。
2.webpack構(gòu)建流程(原理):
從啟動(dòng)webpack構(gòu)建到輸出結(jié)果經(jīng)歷了一系列過(guò)程,它們是:
2.1解析webpack配置參數(shù),合并從shell傳入和webpack.config.js文件里配置的參數(shù),生產(chǎn)最后的配置結(jié)果。
2.2注冊(cè)所有配置的插件,好讓插件監(jiān)聽(tīng)webpack構(gòu)建生命周期的事件節(jié)點(diǎn),以做出對(duì)應(yīng)的反應(yīng)。
2.3從配置的entry入口文件開(kāi)始解析文件構(gòu)建AST語(yǔ)法樹(shù),找出每個(gè)文件所依賴的文件,遞歸下去。
2.4在解析文件遞歸的過(guò)程中根據(jù)文件類型和loader配置找出合適的loader用來(lái)對(duì)文件進(jìn)行轉(zhuǎn)換。
2.5遞歸完后得到每個(gè)文件的最終結(jié)果,根據(jù)entry配置生成代碼塊chunk。
2.6輸出所有chunk到文件系統(tǒng)。