JavaScript 壓縮與混淆實戰:Terser 命令行詳解


使用 Terser 壓縮 JavaScript 文件(基礎 + 現代語法問題解決)

在前端開發中,隨著業務復雜度增加,JavaScript 文件體積越來越大。
文件大帶來的問題:

  • 加載慢:文件越大,瀏覽器下載和解析時間越長。
  • 首屏延遲:影響用戶體驗,甚至影響 SEO。
  • 代碼可讀性過高:源碼直接暴露,不利于安全。

因此,我們通常會在打包階段對 JS 文件進行壓縮和混淆,以減小體積、加快加載速度、提高代碼安全性。
Terser 就是目前最常用的 JavaScript 壓縮工具之一,支持 ES6+ 語法,并且壓縮效果優異。


📑 文章目錄

  • 1. 安裝 Terser
  • 2. 示例文件
  • 3. 壓縮命令
  • 4. 壓縮效果
  • 5. 常用優化參數
  • 6. 壓縮現代 JS 語法報錯的解決方案
  • 總結

1. 安裝 Terser

npm install terser -g
# 或者
yarn global add terser

2. 示例文件

function greet(name) {console.log(`Hello, ${name}!`);
}greet("World");

3. 壓縮命令

terser src/main.js -o src/main.min.js --compress --mangle

4. 壓縮效果

function greet(n){console.log(`Hello, ${n}!`)}greet("World");

5. 常用優化參數

terser src/main.js -o src/main.min.js --compress drop_console=true --mangle

6. 壓縮現代 JS 語法報錯的解決方案

如果壓縮時遇到:

ERROR: Unexpected token: punc (.)

并且代碼中有:

app: config.orderInfo?.appPackage || ""

說明你使用了 ?. 可選鏈 這種 ES2020 語法,舊版 Terser 不支持。


方法 1(推薦):升級 Terser

npm install terser@latest --save-dev

方法 2:手動改寫

app: (config.orderInfo && config.orderInfo.appPackage) || ""

總結

  • Terser 基礎用法--compress 壓縮,--mangle 混淆變量。
  • 現代語法報錯:升級 Terser 或用 Babel 轉譯。
  • 壓縮不僅能減小文件體積,還能提高加載速度和安全性,強烈建議在打包流程中加上。

🖼 封面圖建議:終端壓縮截圖 + 壓縮前后對比圖
🏷 標簽推薦JavaScript前端性能優化代碼壓縮Terser


💬 點個贊再走唄 ??

你在壓縮 JS 時遇到過哪些問題?歡迎留言討論。關注我,獲取更多前端性能優化與構建工具實戰 🚀


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918879.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918879.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918879.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構初階】--排序(三):冒泡排序、快速排序

😘個人主頁:Cx330? 👀個人簡介:一個正在努力奮斗逆天改命的二本覺悟生 📖個人專欄:《C語言》《LeetCode刷題集》《數據結構-初階》 前言:在上篇博客的學習中,我們掌握了直接選擇排序…

名詞概念:什么是尾部誤差?

“尾部誤差”就是指誤差分布在兩端的那一小撮、但數值特別大的誤差——也就是離中心(均值/中位數)很遠的“極端樣本”的誤差。對應統計學里的“分布尾部”(tails)。通俗點:大多數樣本誤差都很小,但總會有少…

記對外國某服務器的內網滲透

本專欄是筆者的網絡安全學習筆記,一面分享,同時作為筆記 文章目錄前文鏈接前言上線CS上線rdp后滲透信息收集SMB Pth攻擊權限維持魔幻上線提權關Windows Defenderend前文鏈接 WAMP/DVWA/sqli-labs 搭建burpsuite工具抓包及Intruder暴力破解的使用目錄掃描…

速賣通平臺關鍵字搜索商品列表列表接口實現指南:從接口分析到代碼落地

在跨境電商開發中,速賣通平臺的商品數據獲取是許多開發者關注的焦點。本文將詳細介紹如何實現速賣通關鍵字搜索商品列表接口,涵蓋接口請求參數分析、簽名機制、分頁處理及完整代碼實現,幫助開發者快速對接速賣通開放平臺。一、接口基本信息速…

UE UDP通信

1.確保工程為C工程,在項目工程的xx.Build.cs中加入Networking和Sockets模塊。PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Networking", "Socke…

JavaScript 邏輯運算符與實戰案例:從原理到落地

JavaScript 中的邏輯運算符不僅是條件判斷的核心,還能通過“短路特性”簡化代碼;結合 DOM 操作的實戰案例,更能體現其靈活性。本文整理了邏輯運算符的個人理解、優先級規則,以及 4 個高頻實戰需求的實現方案,附個人思路…

Android RxJava 過濾與條件操作詳解

RxJava 是一個基于觀察者模式的響應式編程庫,在 Android 開發中被廣泛使用。其中,過濾和條件操作是 RxJava 中非常重要的一部分,它們允許我們對數據流進行精細控制。本文將詳細介紹 RxJava 中常用的過濾與條件操作符及其使用場景。一、過濾操…

云手機都具有哪些特點?

云手機擁有著便捷的遠程操作功能,讓用戶無論身處何地,只要能連接網絡,就能通過手機、電腦等終端設備遠程操控云手機,無需受限于物理位置,大大提升了工作的靈活性與便捷性。云手機主要是依賴于云計算技術,能…

Sparse-ICP—(4) 加權稀疏迭代最近點算法(matlab版)

目錄 一、算法原理 1、原理概述 2、參考文獻 二、代碼實現 三、結果展示 一、算法原理 1、原理概述 見:Sparse-ICP—(1)稀疏迭代最近點算法 2、參考文獻 二、代碼實現 SparseWeightedDistance.m function [move_points,T] =

統信UOS安裝NFS共享文件夾

在 UOS ARM 架構系統上安裝和配置 NFS 服務,實現與局域網中其他服務器共享文件夾的步驟如下:1. 安裝 NFS 服務首先更新系統并安裝 NFS 服務器組件:bash# 更新軟件包列表 sudo apt update# 安裝NFS服務器 sudo apt install nfs-kernel-server …

【完整源碼+數據集+部署教程】孔洞檢測系統源碼和數據集:改進yolo11-RetBlock

背景意義 研究背景與意義 隨著工業自動化和智能制造的快速發展,孔洞檢測作為關鍵的質量控制環節,受到了廣泛關注。孔洞的存在可能會影響產品的強度、密封性和整體性能,因此,準確、快速地檢測孔洞對于保障產品質量至關重要。傳統的…

k8s環境使用Operator部署Seaweedfs集群(一)

#作者:閆乾苓 文章目錄4.1 前置條件4.2 部署seaweedfs-operator4.3 準備operator鏡像SeaweedFS Operator是一個Kubernetes Operator,用于自動化部署和管理SeaweedFS集群 README.md:6-8 。部署分為兩個階段:首先部署Operator本身,然…

實踐基地落地:成都影像產業園與重慶五一職院強實訓

近日,成都國際影像產業園與重慶五一職業技術學院合作的實踐基地正式落地,這一舉措為雙方強化實訓合作、培養高素質技能人才注入了新的活力。實踐基地的落地,是雙方基于各自優勢資源的深度融合。成都國際影像產業園作為影像行業的重要聚集地&a…

算法----滑動窗口

滑動窗口 什么是滑動窗口 滑動窗口是一種常用的技術,主要用于處理連續數據序列(如數組、字符串或時間序列數據),通過動態調整一個固定大小的“窗口”來高效地解決問題。窗口在序列上“滑動”,每次移動一個位置&#xf…

Rust學習筆記(三)|所有權機制 Ownership

本篇文章包含的內容1 重新從堆和棧開始考慮2 所有權規則3 變量和數據(值)的交互方式3.1 移動 Move3.2 克隆 Clone3.3 復制 Copy4 函數與所有權4.1 參數傳遞時的所有權轉移4.2 函數返回時的所有權轉移5 引用和借用6 切片前面兩篇僅僅介紹了一些Rust的語法…

Redis 知識點與應用場景

1. Redis 簡介與核心特性Redis(Remote Dictionary Server)是一款開源的內存數據存儲系統,支持多種數據結構,兼具高性能、持久化、分布式等特性,廣泛用于緩存、數據庫、消息中間件等場景。其核心特性包括:高…

日常反思總結

1.group by和order by的區別

易貝 (eBay (eBay) 關鍵字搜索 API 實戰:從認證到商品列表獲取全流程解析

在跨境電商開發領域,eBay 作為全球最大的在線交易平臺之一,其開放 API 為開發者提供了豐富的商品數據獲取能力。本文將聚焦 eBay 關鍵字搜索商品列表接口的實現,涵蓋 OAuth2.0 認證、高級搜索參數配置、分頁策略及完整代碼實現,幫…

敏捷數據開發實踐:基于 Amazon Q Developer + Remote MCP 構建本地與云端 Amazon Redshift 交互體系

敏捷數據開發實踐:基于 Amazon Q Developer Remote MCP 構建本地與云端 Amazon Redshift 交互體系 新用戶可獲得高達 200 美元的服務抵扣金 亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的…

【SpringBoot】11 概念理解 - 深入理解 Java 和 Spring 中的容器、組件、類、對象與 Bean

文章目錄引言1. 基本概念解析1.1 類(Class)1.2 對象(Object)1.3 組件(Component)1.4 Bean 實例(Bean Instance)1.5 容器(Container)2. 運行時 vs. 非運行時的…