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