JavaScript 压缩与美化 - 浏览器里的 Terser

JavaScript 压缩与美化

缩短局部变量名最省字节,但会毁掉那些把名字当文本来查的代码——eval、new Function,或者读取参数名的框架。如果你依赖这些,就关掉它。

JavaScript 压缩 - 常见问题

Terser——UglifyJS 的继任者,也是 webpack、Rollup 和 Vite 的默认压缩器。它就是你的构建步骤已经在跑的那个引擎,所以这里的输出和构建出来的一致,不是近似。
新
Markdown 编辑器 编写 Markdown 并并排查看渲染结果。支持标题、列表、表格、代码块和链接;可复制 HTML 或下载 .md 与 .html 文件。在浏览器中运行。
今日热门
YAML 格式化 重新整理杂乱 YAML 的缩进,按行号定位错误,并以 JSON 形式回看文档。注释、块标量与锚点都会保留。全部在浏览器中完成。

这个工具能做什么

压缩 JavaScript 不是删空格。用查找替换来做,会得到看着没问题、行为却不一样的文件,而这个差别要到线上才冒出来。这个页面在你的浏览器里跑 Terser——大多数项目构建步骤背后的那个引擎。

使用方法

  1. 1 把 JavaScript 粘到框里。
  2. 2 选好目标版本,并决定要不要缩短变量名。
  3. 3 点压缩——或者点美化,把压缩过的文件重新摊开。

为什么要解析,而不是查找替换

你没写的分号,JavaScript 会替你补上。把「return」和它的值之间的换行删掉,函数就开始返回 undefined——文件依旧合法,只是干的事变了。同一个字符在这里是除号,在那里是正则。要分清这些靠的是语法,不是模式匹配,所以这个页面用的是真正的解析器。

真正变小的是什么

空白和注释是里面最小的一块。真正省下来的,是把局部变量改成单个字母、把分开的声明合成一条、把常量算出来、把永远跑不到的代码扔掉。这些全是树上的操作——压缩器必须知道两个名字指的是同一个绑定,而且它们之间没有谁读过它。

缩短变量名会在哪里咬人

压缩器只能重命名它看得见的东西。写成文本的名字它看不见:eval("count + 1")、new Function("a", "return a"),或者靠读函数参数名来决定注入什么的框架。这些还在找旧名字,然后什么也找不到。这是语言的性质,不是工具的毛病——所以这个开关交给你,而不是默默替你打开。

美化不等于把原文件还给你

美化会把缩进和换行放回去,压缩过的文件重新变得能读。但被丢掉的东西回不来:注释没了;如果变量名被缩短过,它们就一直是短的——没有工具能猜出「e」曾经叫「errorMessage」。要调试线上文件,只有 source map 能把原件带回来。

相关开发工具

JSON 格式化 在浏览器里格式化、压缩并校验 JSON。出错位置精确到行列,可折叠的树状图展示结构。
HTML 格式化 把乱糟糟的 HTML 缩进成能读的样子,或者压掉多余部分让它变小。片段也能处理,而且绝不把你的标记改写成别的东西。
CSS 压缩 去掉注释和空白来压缩 CSS,或者重新展开成整齐的缩进。calc() 中的空格、字符串和许可证注释都原样保留。
XML 格式化 把乱糟糟的 XML 缩进成能读的样子,或者压小。支持 RSS、CDATA 和命名空间,绝不改写你的文档。
SQL 格式化 把长查询拆成好读的几行,或者再挤回一行。关键字大小写、带引号的名字和字符串原样保留。

您可能喜欢的其他工具

Word转PDF 免费把 Word 转成 PDF:上传 DOC、DOCX、ODT 或 RTF 文件,几秒内下载排版完好的 PDF,无需注册。
PDF转Word 免费把 PDF 转成 Word:上传 PDF,几秒内下载可编辑的 DOCX 文件,无需注册,也没有水印。
字数统计器 免费字数统计:粘贴文本即可统计字数、字符、句子与段落,并估算阅读时间,内容不会离开浏览器。
字符计数器 免费字符统计:统计含空格与不含空格的字符数、词数和行数,并检查标题与元描述的 SEO 长度限制。
关键词密度检查器 免费关键词密度分析:粘贴文本或网址,查看每个词与短语出现的次数及占比,辅助内容优化。