功能簡介
壓縮(minify)會移除瀏覽器執行程式碼時不需要的一切:空白、換行、註解和冗長的名稱。檔案越小下載越快,能改善頁面載入時間和 Core Web Vitals,在行動網路上尤其明顯。
這個工具用 Terser 壓縮 JavaScript,它也是 webpack、Rollup 和 Vite 採用的壓縮器;並用 CSSO 壓縮 CSS,CSSO 還會重組樣式表:縮短顏色(#ffffff 變成 #fff)、移除多餘的單位和值(0px 0px 變成 0),並合併選擇器或宣告相同的規則。
使用方法
- 把程式碼貼到 輸入 框、把
.js或.css檔案拖進去,或點 範例。 - 選擇 JavaScript 或 CSS。
- 對於 JavaScript,縮短變數名稱 會把區域變數和參數改名為單一字母。匯出的名稱和全域名稱絕不會被更動。
- 對於 CSS,合併重複規則 會把宣告相同的規則合併在一起。
- 複製或下載結果。每個框下方的大小計數器會顯示你省下了多少。
如果 JavaScript 有語法錯誤,錯誤訊息會標出行號和欄號,讓你直接跳過去。
範例
// Sum the price of every item
export function cartTotal(items, discountPercent = 0) {
const subtotal = items.reduce(function (sum, item) {
return sum + item.price * item.quantity
}, 0)
return subtotal * (1 - discountPercent / 100)
}
會變成
export function cartTotal(t,r=0){return t.reduce(function(t,r){return t+r.price*r.quantity},0)*(1-r/100)}
什麼時候使用
適合臨時的一次性需求:給 CDN 用的程式碼片段、HTML 電子郵件中的內嵌指令碼、書籤小程式(bookmarklet),或看看一個函式庫最小能壓到多小。在正式專案中,應該由打包工具在每次建置時自動壓縮,讓原始碼保持可讀。
常見問題
› 我的程式碼會被上傳到任何地方嗎?
不會。Terser 和 CSSO 在你的瀏覽器中執行,所以專有原始碼絕不會離開你的裝置。
› 壓縮會讓我的 JavaScript 壞掉嗎?
對於有效的程式碼,Terser 只會套用不改變行為的轉換。如果程式碼在執行時依賴函式或變數名稱(例如透過 Function.name),縮短名稱可能會造成影響;這時請關閉「縮短變數名稱」。
› 為什麼 CSS 的「合併重複規則」是選擇性的?
合併會在規則之間搬移宣告。這在幾乎所有樣式表中都是安全的,但如果你的 CSS 依賴相同權重規則的確切順序,關閉它可以保證維持原本的順序。
› 會保留哪些註解?
開啟「保留授權註解」時,以 /*! 開頭或包含 @license、@preserve 的註解會保留,這是大多數開源授權的要求。其他註解都會被移除。