webpack-bundle-analyzer?插件配置使用方法
一、webpack-bundle-analyzer 是什么?
webpack-bundle-analyzer 是 webpack 的插件,需要配合 webpack 和 webpack-cli 一起使用。這個插件可以讀取輸出文件夾(通常是 dist)中的 stats.json 文件,把該文件可視化展現(xiàn),生成代碼分析報告,可以直觀地分析打包出的文件有哪些,及它們的大小、占比情況、各文件 Gzipped 后的大小、模塊包含關(guān)系、依賴項等,對應(yīng)做出優(yōu)化,從而幫助提升代碼質(zhì)量和網(wǎng)站性能。
二、安裝
# NPM npm install --save-dev webpack-bundle-analyzer # Yarn yarn add -D webpack-bundle-analyzer
三、使用方法
1. 作為插件使用
1. 配置 webpack.config.js 文件:
// webpack.config.js 文件 const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin module.exports={ plugins: [ new BundleAnalyzerPlugin() // 使用默認配置 // 默認配置的具體配置項 // new BundleAnalyzerPlugin({ // analyzerMode: 'server', // analyzerHost: '127.0.0.1', // analyzerPort: '8888', // reportFilename: 'report.html', // defaultSizes: 'parsed', // openAnalyzer: true, // generateStatsFile: false, // statsFilename: 'stats.json', // statsOptions: null, // excludeAssets: null, // logLevel: info // }) ] }
2. 配置 package.json 文件
{ "scripts": { "dev": "webpack --config webpack.dev.js --progress" } }
3. 在命令行工具中輸入
npm run dev
按回車。此時會打開瀏覽器,你將看到項目資源包的交互式可視化樹形分析圖。
圖中占面積越大的文件,其文件的大小越大,部署到服務(wù)器之后,在瀏覽器中加載的時間越長,點擊左上角的像箭頭一樣的符號可以直接查看各個文件的大小。
該分析圖可以幫助我們:
- 了解 bundle 包中的真正內(nèi)容
- 找出哪些模塊尺寸最大
- 查找誤引入的模塊
- 優(yōu)化項目
最棒的是它支持縮小的 bundle 文件,它解析它們以獲得 bundle 文件模塊的實際大小,還顯示了它們的壓縮大小。
得到可視化的分析結(jié)果之后,接下來就對占比比較大或者依賴程度比較高的文件進行優(yōu)化了。
4. 參數(shù)配置
new BundleAnalyzerPlugin(options?: object)
名稱 | 類型 | 描述 |
---|---|---|
analyzerMode | server / static / json / disabled | 默認值:server。 在server 模式下,分析器將啟動 HTTP 服務(wù)器以顯示 bundle 報告。 在 static 模式下,將生成帶有 bundle 報告的單個 HTML 文件。 在 json 模式下,將生成帶有捆綁報告的單個 JSON 文件。 在 disable 模式下,您可以使用此插件通過將 generateStatsFile 設(shè)置為 true 來生成 Webpack Stats JSON 文件。 |
analyzerHost | { String } | 默認值:127.0.0.1。 在 server 模式下用于啟動 HTTP 服務(wù)器的主機。 |
analyzerPort | { Number }或者 auto | 默認值:8888。在 server 模式下用于啟動 HTTP 服務(wù)器的端口 |
reportFilename | {String} | 默認值:report.html。 在 static 模式下生成的捆綁報告文件的路徑。 它可以是絕對路徑,也可以是相對于 bundle 文件輸出目錄的路徑(在 webpack 配置中是 output.path)。 |
reportTitle | { String | function } | 默認值:返回打印當前日期和時間的函數(shù)。 HTML 的 title 元素的內(nèi)容; 或獲取該內(nèi)容的 () => string 形式的函數(shù)。 |
defaultSizes | stat / parsed / gzip | 默認值:parsed。 默認情況下在報告中顯示的模塊大小。 stat:這是文件的“輸入”大小,在進行任何轉(zhuǎn)換(如縮小)之前。之所以稱為“stat size”,是因為它是從 Webpack 的 stats 對象中獲取的。 parsed:這是文件的“輸出”大小。 如果你使用的是 Uglify 之類的 Webpack 插件,那么這個值將反映代碼的縮小后的大小。 gzip:這是通過 gzip 壓縮運行解析的包/模塊的大小。 |
openAnalyzer | { Boolean } | 默認值:true。 在默認瀏覽器中自動打開報告。 |
genarateStatsFile | { Boolean } | 默認值:false。 如果為 true,將在 bundle 輸出目錄中生成 webpack stats JSON 文件 |
statsFilename | { String } | 默認值:stats.json。 如果 generateStatsFile 為 true,表示將生成的 webpack stats JSON 文件的名稱。 它可以是絕對路徑,也可以是相對于bundle文件輸出目錄的路徑(在 webpack 配置中是 output.path)。 |
statsOptions | null 或 { Object } | 默認值:null。 stats.toJson() 方法的選項。 例如,您可以使用 source: false 選項從統(tǒng)計文件中排除模塊的源代碼。 |
excludeAssets | { null | pattern | pattern[] } 其中 pattern 可以是 { String | RegExp | function } | 默認值:null。 用于匹配將從報告中排除的資源名稱的模式。 如果 pattern 是一個字符串,它將通過 new RegExp(str) 轉(zhuǎn)換為 RegExp。 如果 pattern 是一個函數(shù),它應(yīng)該具有以下簽名 (assetName: string) => boolean 并且應(yīng)該返回 true 以排除匹配的資源。 如果提供了多個模式,資源應(yīng)至少匹配其中一個以被排除。 |
logLevel | info / warn / error / silent | 默認值:info。 用于控制插件輸出多少細節(jié)。 |
優(yōu)點:簡單
缺點:每次運行打包命令時,都在本地起一個端口號為8888的本地服務(wù)器,并自動在瀏覽器中展示項目的分析結(jié)果。不夠靈活,并不是每次構(gòu)建都想看代碼分析!
2. 作為CLI的一個工具
如果你有一個 webpack stats JSON 文件,你可以分析一個現(xiàn)有的包。
1、配置 webpack.config.js 文件:
可以使用 BundleAnalyzerPlugin 將 generateStatsFile 選項設(shè)置為 true
// webpack.config.js 文件 const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin module.exports={ plugins: [ new BundleAnalyzerPlugin({ analyzerMode: 'disabled', // 不啟動展示打包報告的http服務(wù)器 generateStatsFile: true, // 是否生成stats.json文件 }), ] }
2、配置 package.json 文件
{ "scripts": { "generateAnalyzFile": "webpack --profile --json > stats.json", // 生成分析文件 "analyz": "webpack-bundle-analyzer --port 8888 ./dist/stats.json" // 啟動展示打包報告的http服務(wù)器 } }
3、在命令行工具中,先運行 npm run generateAnalyzFile 命令,然后運行 npm run analyz 命令。此時就可以看到分析結(jié)果了。
優(yōu)點:稍微復(fù)雜,但是靈活
缺點:每次運行命令時,都會在 dist 目錄下生成一個 stats.json 文件。這個問題,可以將 generateStatsFile 屬性設(shè)置為 false,但是這樣就無法生成 stats.json 文件了。解決辦法:需要查看分析報告的時候設(shè)置為 true,其余時候設(shè)置為 false。
參考文章:
到此這篇關(guān)于webpack-bundle-analyzer 插件配置的文章就介紹到這了,更多相關(guān)webpack-bundle-analyzer 插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS控制只能輸入數(shù)字并且最多允許小數(shù)點兩位
這篇文章主要介紹了JS控制只能輸入數(shù)字并且最多允許小數(shù)點兩位,本文給大家提到j(luò)s如何限制input輸入框只能輸入數(shù)字問題,需要的朋友可以參考下2019-11-11從柯里化分析JavaScript重要的高階函數(shù)實例
這篇文章主要為大家介紹了從柯里化分析JavaScript重要的高階函數(shù)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10layui 實現(xiàn)二級彈窗彈出之后 關(guān)閉一級彈窗的方法
今天小編就為大家分享一篇layui 實現(xiàn)二級彈窗彈出之后 關(guān)閉一級彈窗的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09JavaScript利用normalizr實現(xiàn)復(fù)雜數(shù)據(jù)轉(zhuǎn)換
當我們需要進行數(shù)據(jù)轉(zhuǎn)換以便拆分和維護時,可以使用redux作者 Dan Abramov 編寫的normalizr來處理數(shù)據(jù),本文將為大家詳細講講其用法,感興趣的可以了解一下2022-07-07