JavaScript 压缩工具

粘贴 JavaScript,用 Terser 压缩它:删除无用代码、缩短名称、去除空白。语法错误会精确定位到行和列。

在浏览器中运行无需注册不上传任何数据

压缩结果

如何使用JavaScript 压缩工具

  1. 粘贴 JavaScript 或打开一个 .js 文件。
  2. 选择选项:混淆名称会缩短局部变量名,压缩会把代码改写为更小的等价代码,ES 模块允许使用顶层 import/export。
  3. 选择你的用户浏览器所支持的 ECMAScript 目标版本。ES2020 对所有常青浏览器都是安全的。
  4. 在输出下方查看大小、节省比例和 gzip 估算值。
  5. 复制压缩后的代码,或下载为 output.min.js。

JavaScript 压缩工具有什么作用?

压缩会让 JavaScript 变小,但不改变其功能。本工具使用 Terser(webpack、Vite 和 Rollup 背后的压缩器),并进行三类改动:

  • 删除空白和注释:JavaScript 引擎不需要缩进、换行和注释。
  • 名称混淆:像 subtotal 这样的局部变量名和函数参数名会变成单个字母。全局名称和对象属性保持不变,因此你的公共 API 仍然可用。
  • 压缩:折叠常量表达式,删除不可达代码,把 if 语句改为三元表达式,并内联短函数。

压缩与 gzip:两者都需要吗?

需要。gzip 和 Brotli 在传输时压缩重复的字节模式,而代码压缩则去掉浏览器本需要下载、解析和编译的字节。典型的脚本经过压缩可缩小 40–60%,再经 gzip 还能缩小 60–70%。这里显示的 gzip 大小可以很好地估算服务器实际发送的大小。

保留许可证注释

许多开源许可证(MIT、BSD、Apache)要求版权声明随代码一起保留。按照惯例,以 /*! 开头或包含 @license 或 @preserve 的注释,会在开启保留许可证注释时被保留。

什么时候不必手动压缩

如果你的项目已经使用了打包工具,就让它在生产构建时压缩代码并生成用于调试的 source map。在线压缩工具最适合一次性脚本、CMS 或标签管理器中的代码片段、书签小工具(bookmarklet),以及看看一段代码最多能压缩到多小。

常见问题

我的代码会被上传到服务器吗?
不会。Terser 在你的浏览器标签页中运行,因此专有代码永远不会离开你的电脑。
压缩会破坏我的代码吗?
对于有效的 JavaScript,Terser 只做保持行为完全一致的转换。依赖 Function.prototype.toString() 或通过 eval 访问局部变量名的代码可能会受影响;这种情况下请关闭混淆名称。
支持 async/await、class 和可选链等现代语法吗?
支持。Terser 可以解析 ES2022+ 语法。目标版本设置只控制输出可以使用哪些语法,不会把新特性转译为旧语法。
minify 和 uglify 有什么区别?
两者意思相同。UglifyJS 是经典工具;Terser 是它的维护分支,完整支持 ES2015+。

相关工具