webpack打包結果依賴分析
安裝外掛
ofollow,noindex">https://www.npmjs.com/package/webpack-bundle-analyzer
npm install webpack-bundle-analyzer –save-dev
配置
在 package.json中
傳入環境變數 ANALYZE
,最後 process.env.ANALYZE
來讀取
"scripts": { "build": "node scripts/build.js", "analyze": "cross-env ANALYZE=1 npm run build" }
在 build/webpack.prod.config.js
的 plugin
後面加上判斷
plugins.concat(process.env.ANALYZE?[ new BundleAnalyzerPlugin({ //可以是`server`,`static`或`disabled`。 //在`server`模式下,分析器將啟動HTTP伺服器來顯示軟體包報告。 //在“靜態”模式下,會生成帶有報告的單個HTML檔案。 //在`disabled`模式下,你可以使用這個外掛來將`generateStatsFile`設定為`true`來生成Webpack Stats JSON檔案。 analyzerMode: 'server', //將在“伺服器”模式下使用的主機啟動HTTP伺服器。 analyzerHost: '127.0.0.1', //將在“伺服器”模式下使用的埠啟動HTTP伺服器。 analyzerPort: 8888, //路徑捆綁,將在`static`模式下生成的報告檔案。 //相對於捆綁輸出目錄。 reportFilename: 'report.html', //模組大小預設顯示在報告中。 //應該是`stat`,`parsed`或者`gzip`中的一個。 //有關更多資訊,請參見“定義”一節。 defaultSizes: 'parsed', //在預設瀏覽器中自動開啟報告 openAnalyzer: true, //如果為true,則Webpack Stats JSON檔案將在bundle輸出目錄中生成 generateStatsFile: false, //如果`generateStatsFile`為`true`,將會生成Webpack Stats JSON檔案的名字。 //相對於捆綁輸出目錄。 statsFilename: 'stats.json', //stats.toJson()方法的選項。 //例如,您可以使用`source:false`選項排除統計檔案中模組的來源。 //在這裡檢視更多選項:https://github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21 statsOptions: null, logLevel: 'info' // 日誌級別。可以是'資訊','警告','錯誤'或'沉默'。 }) ]:[])
啟動
npm run analyze
在對應地址後面新增埠 8888
,即可得到一個視覺化模組大小介面
這個外掛就是從 stats.json
中獲取 chunks
然後最終使用 Canvas
畫圖。具體程式碼位於 analyzer.js
中的 getViewerData
方法