webpack的優化配置:Tree shaking , 拆分等
阿新 • • 發佈:2020-09-22
一,mode:development / production
二,Tree shaking (生產模式預設啟用)
上下文未用到的程式碼,不會被打包
要基於ES6:import export。
sideEffects:不需要被Tree shaking的檔案,有可能誤刪程式碼,如模組中的css,全域性變數等。
babel配置影響:保留es6的模組化語法,不需要轉成其他模組化語法。module:false
三,提升構建的速度
noParse:一些庫不需要解析,沒有使用模組化方式的庫或獨立的庫。eg:loadsh
DllPlugin:避免打包時,對不變的庫進行重複構建。提取成動態連結的方式,進行引用。拆分bundles。
eg:react,react-dom(比較穩定的庫)
四,按需載入
1,通過entry入口檔案(多個)。特點:需手工維護入口檔案,入口檔案有可能有重複引用,重複打包。
2,防止重複:使用 splitChunk 去除重複引用和分離(第三方庫和業務) chunk。
optimization:{ //實現按需載入,將業務程式碼 與 帶三方庫程式碼進行分離 splitChunks: { cacheGroups: { vendor:{ //第三方庫 name: 'vendor', test: /[\\/]node_modules[\\/]/, minSize:0, minChunks: 1, priority: 10 ,// 資源載入優先順序 chunks: 'initial' //同步 }, common: { //公共程式碼 name: 'common', test: /[\\/]src[\\/]/, chunks: 'all', //靜態引入,和動態引入都考慮在內 } } } },
3,動態載入:通過模組的行內函數呼叫來分離程式碼。import('..').then(_ => {})