JavaScript压缩工具
粘贴脚本或 ES 模块(最多 1,000,000 个字符),或打开一个 .js 文件。
请粘贴要精简的 JavaScript 代码。
代码超过 1,000,000 个字符。请拆分成较小的部分分别精简。
无法将此文件作为文本读取。请打开 JavaScript 文件,或直接粘贴代码。
您的浏览器不允许此页面为下一步保存代码。请允许此页面使用网站数据,或粘贴较短的部分,然后重试。
下一步:选择选项粘贴 JavaScript 代码即可获得体积缩小 40%-70% 的压缩版:去除空白字符、将变量缩写为单个字母、移除死分支、折叠常量,并在你启用时清除注释。适用于快速检查文件大小、一次性嵌入,以及无需运行完整构建工具链的着陆页。
如何精简 JavaScript
-
1
粘贴源代码
任何有效的 ES5+ JavaScript 语法均可使用;对于 ES6 及更高版本(模板字面量、类、模块),请确保目标版本与之兼容。
-
2
选择压缩强度
安全模式(仅空白和注释);默认模式(+ 变量名混淆);激进模式(+ 属性名混淆,可能导致 DOM 访问异常)。
-
3
最小化
该工具可执行与Terser兼容的转换,并输出包含处理前/处理后字节数的结果。
-
4
复制或下载
将输出内容粘贴到`<script>`标签中,或另存为`.min.js`格式以便在 CDN 中使用。
字节的去向
典型的压缩文件体积比源文件小40%-70%。若使用gzip(或Cloudflare及大多数CDN采用的Brotli)进行压缩,还可再降低60%-75%。综合来看,一个100KB的源文件经压缩后传输时仅需约15-25KB。
| 源文件 | 压缩后 | +gzip | +Brotli |
|---|---|---|---|
| jQuery 3.6 | 87 KB | 30 KB | 27 KB |
| Lodash 4.17 | 71 KB | 25 KB | 22 KB |
| React + ReactDOM 18 | 140 KB | 44 KB | 39 KB |
应用的技术
| 技术 | 作用 |
|---|---|
| 移除空白 | 去除空格、制表符和换行符 |
| 移除注释 | 删除 // 和 /* */(可保留 /*! 等许可证注释) |
| 变量名混淆 | 将 userName 重命名为 u(作用域安全) |
| 属性名混淆 | 将 obj.foo 重命名为 obj.a(不安全) |
| 常量折叠 | 1 + 2 + 3 → 6 |
| 死代码消除 | 删除 return 之后的分支 |
| 控制流内联 | 内联仅使用一次的小型函数 |
| 语句合并与布尔值简写 | a(); b(); → a(),b();,true → !0 |
安全模式 vs 攻击模式
- 安全模式保留变量名称,仅去除空白字符和注释;适用于需要可读堆栈跟踪信息的调试场景。
- 默认模式会混淆局部变量,但保留全局变量和属性名称。适用于大多数代码。
- 激进模式会混淆所有内容,包括属性名称。除非配置保留名称,否则该模式通常会导致动态访问属性的代码出错(如
obj[key]、Object.keys(obj))。
何时进行压缩,以及何时不应进行
- 请在生产环境中,对浏览器下载的每个资源都进行压缩。
- 请提供源映射文件,以便浏览器的开发者工具在调试时仍能显示原始名称。
- 请勿在开发阶段进行压缩,这会浪费构建时间并导致错误信息难以阅读。
- 请勿对已压缩的代码再次压缩。
.min.js文件在重新压缩时体积仅缩减约 1%-3%,却有破坏代码的风险。
常见错误
- 未配置保留名称。 当
payment_method被错误修改为a时,动态属性访问(obj["payment_" + type])功能将失效。 - 忘记源地图。 若缺少
.map文件,生产错误信息将无法读取。 - **同时对CommonJS和 ESM 进行压缩。**混合模块系统在压缩前需仔细执行树结构优化。
常见问题
通常未压缩时文件体积缩小40%-70%,经gzipped或Brotli压缩后进一步缩减60%-75%。一个100 KB的源文件在传输过程中通常仅占用约15-25 KB。
默认(局部变量)混淆几乎总是安全的。激进的属性名混淆会破坏所有动态访问属性的代码。启用前,请仔细配置 reserved 列表。
可以。勾选“同时生成 Source Map(源映射)”,即可随精简后的代码得到一个 .map 文件。它把精简后的代码对应回您原来的行和名称,让浏览器 DevTools 显示可读的代码和堆栈跟踪。请把两个文件放在同一文件夹中:精简后的代码末尾带有 //# sourceMappingURL= 注释,会按文件名找到映射文件。映射文件包含您的原始代码,因此只应发布在允许任何人阅读这些代码的地方。
支持。顶层 await(在 ES 模块中)、类字段、私有方法、空值合并运算符、可选链和数字分隔符都受支持。装饰器不受支持:请先像 TypeScript 或 JSX 一样,把它们编译为普通 JavaScript。精简工具绝不会把新语法转换为旧版本:“ECMAScript 版本”选项只决定精简后的代码为节省字节可以使用的最新语法。
不会。您粘贴或打开的代码在浏览器中完成精简,不会发送到我们的服务器,也不会添加到页面链接中。在各步骤之间,代码保存在此标签页的会话存储中,关闭标签页时浏览器会将其清除。
相关工具
Webpack 配置生成器
通过简短表单为 webpack 5 生成 webpack.config.js:设置 entry、输出文件夹和 mode,然后开启 TypeScript、Babel、CSS 加载器、HtmlWebpackPlugin 和开发服务器。
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
tsconfig.json 生成器
选择 target、module、moduleResolution、JSX 和常用的 strict 系列开关,生成一份干净的 tsconfig.json,直接复制到你的项目里。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
Markdown 图片生成器
生成带替代文本、title 属性和可选链接的 Markdown 图片语法。支持内联格式和引用格式输出。
此工具还提供其他语言版本
- Minificateur JavaScript [FR]
- Bộ thu nhỏ mã JavaScript [VI]
- JavaScript-minifierare [SV]
- JavaScript圧縮ツール [JA]
- Minifikator JavaScripta [PL]
- Minificador de JavaScript [ES]
- JavaScript-minifier [NL]
- Minificador de JavaScript [PT]
- เครื่องมือลดขนาดโค้ด JavaScript [TH]
- Minifier JavaScript [ID]
- 자바스크립트 압축기 [KO]
- أداة تقليل حجم كود جافا سكريبت [AR]
- JavaScript-Minifier [DE]
- Минифайер JavaScript [RU]
- JavaScript Minörü [TR]
- JavaScript Minifier [EN]
- Minificatore JavaScript [IT]