关于此工具
JavaScript 压缩器通过移除注释、折叠多余的空白和换行来减小脚本的大小,然后报告节省的字节数。它是一种快速、无依赖的方式,可在把小脚本或代码片段粘贴到对大小敏感的地方之前将其缩小。所有处理都在本地进行——代码被纯粹当作文本处理,从不执行,因此没有 eval,也不会上传任何内容。
这是一个保守的、token 感知的压缩器。它将源代码扫描为 token,正确跳过字符串、模板字面量、正则表达式和注释的内部,因此它们的内容被逐字节保留。注释被丢弃(或通过开关保留),空白连续段在各处被移除,除非确实需要一个空格——在两个标识符/数字/关键字 token 之间(因此 'return a' 绝不会变成 'returna'),或在两个否则会融合的运算符字符之间(因此 'a + +b' 会保留其空格)。关键字后跟的正则字面量也会保留其分隔空格。
由于它不重建抽象语法树,因此不会重命名变量或执行死代码消除——它只移除可证明能安全移除的部分。它还会折叠换行,因此依赖跨行自动分号插入的代码应当已使用显式分号。面板会显示原始大小、压缩后大小以及节省的百分比。
常见问题
它会重命名变量或压缩逻辑吗?
不会。这是一个保守的空白与注释压缩器,而非完整的压缩器。它不会混淆变量名、折叠常量或移除死代码——它只去除注释和非必要空白,因此输出仍易于与源代码做差异对比。
我的字符串和正则安全吗?
安全。压缩器将源代码分词并完全保留字符串、模板字面量和正则表达式的内部。它们内部的空格和类似注释的文本绝不会被触碰,因此压缩后的代码行为完全相同。
压缩会破坏我的代码吗?
它会折叠换行,因此依赖跨行自动分号插入的脚本可能改变含义。如果你的代码已使用显式分号——如大多数代码那样——输出是等价的。若有疑问,请测试压缩后的结果。
这些大小数字是什么意思?
压缩后,工具以 UTF-8 字节测量原始和压缩后的源代码,并显示两者加上减少的百分比,因此你能准确看到脚本缩小了多少。