BrowserDevTools

打包產物預算分析器

指向你的建置輸出資料夾,就能拿到決定網站快不快的那些數字:每個 chunk 的真實 gzip、首次繪製時實際下載的內容與延遲載入的差別、最大的資源,以及對照你設定預算的明確判定。什麼都不會上傳——資料夾是在這個分頁裡讀取與壓縮的。

建置輸出

把 dist 資料夾拖到這裡,或

資料夾是在這個分頁裡讀取與 gzip 壓縮的——dist 資料夾是私有程式碼,所以什麼都不會上傳。

還沒有建置輸出——請拖入 dist 資料夾,或載入範例。

你的 dist 資料夾是在本機解析與壓縮的。這件事在這裡比其他地方更重要:建置產物是壓縮過的私有程式碼,而大家平常會用的那些分析器都要求你把它上傳。

載入範例建置輸出,或拖入你自己的 dist 資料夾,就能看到報告。

一個不要你上傳建置產物的預算工具

打包分析器是少數幾乎每個選項都要求你上傳「正在分析的東西」的工具類別之一。對建置產物來說這是個奇怪的要求:它是你私有程式碼編譯、minify 壓縮、附上 source map 之後的版本,而一個 dist 資料夾常常好幾百 MB。這個頁面改成在本機讀取——資料夾用 File API 解析,每個檔案則在分頁裡用 `CompressionStream` 壓成 gzip,跟伺服器實際送出的演算法是同一個。

有三個決定塑造了這個工具回報的內容:

關於這些數字,有兩點誠實的補充。source map 會單獨回報,因為除非 devtools 主動要求,訪客永遠不會下載它們——它們體積龐大,否則會佔據每一份「最大檔案」清單。另外你的伺服器可能偏好 Brotli,它通常比這裡顯示的 gzip 再小 15-20%;如果你的主機有開啟,實際傳輸量會比這份報告更小。這份報告不會告訴你的是某個 chunk 為什麼這麼大——那件事你還是需要原始碼層級的視覺化工具,但你已經不必把建置產物交給別人的伺服器,才能知道該去看哪個 chunk。

常見問題

我的建置產物會被上傳嗎?
不會。資料夾是用 File API 讀取,並在你的瀏覽器分頁裡用 CompressionStream 壓縮;沒有接收檔案的後端端點,也沒有分享連結。對一個 dist 資料夾——壓縮過的私有程式碼加上 source map——來說,這正是該用這個工具而不是線上分析器的理由。
進入點與延遲載入有什麼差別?
進入點 chunk 是訪客在頁面能互動之前會下載的內容,包含進入點所 import 的 vendor chunk。延遲載入的 chunk 只會在對應的路由或元件被用到時才送達,所以它們影響的是瀏覽過程而不是首次繪製。這個拆分來自你的 .vite/manifest.json,那是 Vite 在 build.manifest 開啟時寫出的檔案。
為什麼需要 manifest.json?
少了它,體積數字照樣算得出來,但「進入點 vs 延遲載入」的分類就做不了:manifest 正是記錄哪個輸出檔案是進入點、哪個是動態進入點的地方。如果它不存在,報告會講明,並退回用副檔名分類——那樣分不出 vendor chunk 與路由 chunk。
gzip 的數字是真的嗎?
是——每個文字資源都真的用 gzip 壓縮過(壓縮等級由瀏覽器決定),並取其位元組長度。這不是查表估出來的。字型、圖片與其他已經壓縮過的檔案會排除在這一步之外,說明區也會寫明,因為把它們再壓一次只會得到比你的伺服器實際送出的更小的數字。
我該設定多少預算?
就看你自己那份效能預算怎麼寫。內容型網站常見的起點是每個 chunk 40 KB gzip、JavaScript 總量 200 KB,這也是這個網站對自己的要求;這裡的預設值用的就是這兩個數字,所以在你還沒設定任何東西之前,工具就已經有用。重點是那個判定,不是數字本身。