什麼是JS程式碼壓縮工具?

JS 壓縮工具使用 Terser 引擎,透過移除空白字元、註解並縮短變數名稱來壓縮 JavaScript 程式碼。這可縮小檔案大小,加快頁面載入速度,降低頻寬費用,同時保留程式碼的完整功能。

壓縮器在本機使用 Terser 處理程式碼:去除空白與註解,啟用 mangle 後把區域變數改為單字母,啟用 compress 後做安全的 AST 變換,並可移除 console.log。工具會顯示原始大小、壓縮後大小以及節省百分比,方便上線前確認效果。

使用方法

  1. 將 JavaScript 程式碼貼入輸入編輯器,或直接上傳 .js 檔案。
  2. 選擇壓縮選項:開啟變數名稱混淆(縮短變數名稱)、壓縮等級,以及是否移除 console.log。
  3. 點擊「壓縮」處理程式碼。查看檔案大小縮減比例,然後下載壓縮後的檔案或複製到剪貼簿。

何時使用

  • 把 JS 套件壓縮後丟到沒有建置步驟的 CDN。
  • 把第三方函式庫貼進 CMS 佈景前,先移除註解和 console 語句。
  • 為客服小工具、廣告像素或外部 script 標籤產出一次性壓縮版本。

結果

您有一個 45KB 的工具函式庫,包含大量註解和冗長的變數名稱。將其貼入,啟用變數名稱混淆與壓縮,即可得到 12KB 的輸出——壓縮率達 73%,可直接用於正式環境部署。

常見問題

壓縮會不會弄壞程式?
Terser 預設保守、力求保留語意。mangle 只重新命名未匯出的變數,compress 不會做無法證明安全的轉換。若程式依賴 Function.name 或對原始碼做 eval,就針對該檔關閉 mangle。
通常能縮小多少?
JavaScript 一般可縮小 40% 到 70%。註解多、變數名長、含大量無用分支的程式縮得多;原本緊湊或多為字串字面量的程式縮得少。再經 gzip 之後差距會更小。
minify、compress、mangle 三者有何不同?
minify 是統稱。compress 在語法層做常數摺疊與刪除死分支;mangle 把識別字改為短名。三者可以單獨啟用,通常一起開啟才會得到最小輸出。
伺服器會做 gzip 或 brotli,還需要先 minify 嗎?
需要。gzip 處理的是文字的冗餘,並不會把長變數名換掉,也不會刪除無效分支。先 minify 過的程式經 gzip 之後仍更小,載入後解析也更快。兩道工序是相加,而非重複。
支援 TypeScript 或 ES2022 等較新語法嗎?
純 TypeScript 必須先編譯為 JS,因為 Terser 只吃 JavaScript。直到 ES2022 的現代語法(私有欄位、頂層 await、可選串接)都能直接解析,無須 Babel 轉換。

相關工具