JavaScript 美化与压缩
JavaScript Beautifier & Minifier
只删注释和空白来压缩 JavaScript 或 TypeScript,不改任何名字;也能把挤成一行的打包产物重新缩进,让它重新可读。
把压缩过的 JavaScript 或 TypeScript 美化到能读,或者在你想让它更小时去掉注释和空白。它建立在分词器而不是解析器上,这条边界正是它诚实的地方:不重命名任何东西,不改写任何表达式,字符串、模板和正则内部一概不碰。
JavaScript · TypeScript 输入
拖入 .js 或 .ts 文件
只在这个标签页里读取,不上传。
整理结果
Token
109
行数
18
说实话:这是个分词器,不是解析器
- · 分词器能准确分辨正则字面量和除法,分辨模板字面量里的
${ {a:1}.a },也分辨字符串里的 //。所以字符串、模板和正则里面的内容一个字符都不动。 - · 压缩只删注释和空白。它不重命名任何东西,不改写任何表达式,并且保留自动分号插入(ASI)所依赖的换行——
return之后、后置 ++ 之前、以及下一行以 ( 或 [ 开头的地方。它压不到 Terser 那么小,但也不会改变行为。 - · 格式化靠花括号、方括号的深度和 ; 找出语句边界,重新缩进,并保留原本就在那儿的换行。它不会补分号,不会折长行,也分不出对象字面量和代码块,所以两者都是一行一项。
- · TypeScript 的泛型
Map<string, T>和比较式a < b靠看前后的 token 区分。JSX 不处理。 - · 把混淆过的打包文件摊开到能读,这就够了;要提交的代码,Prettier 才是对的工具。
要找出压缩后的堆栈信息背后的原始位置,请用 Source Map 还原。
怎么用
粘贴代码或拖入文件
挤成一行的打包产物、缩进混杂的文件、带泛型的 TypeScript——读法都一样。文件在这个标签页里读取。
选「格式化」或「压缩」
「格式化」按花括号深度重新缩进,不动你原有的换行。「压缩」只去掉注释和空白,别的什么都不做;你要求的话会保留 `/*!` 许可证头。
盯着记号流检查
每次运行都会把输出的有效记号和输入比较。一旦不同,页面会用红色说出来,并告诉你改用你的输入——这是唯一绝不能沉默的失败模式。
常见问题
为什么我压缩后的文件还是比 Terser 的大?
因为这里只删注释和空白。Terser 会解析程序,能重命名局部变量、折叠常量、删除死分支;那需要 AST 和作用域分析,任何一处细微的错误都会改变行为。这里的取舍是:省得少一些,但不会弄坏你的代码。
压缩会破坏自动分号插入吗?
不会——ASI 依赖的换行都保留了:`return` 之后、后缀 `++` 之前,以及下一行以 `(` 或 `[` 开头的地方。这些正是去掉一个换行就会改变程序行为的位置。
为什么我的对象字面量出来是一行一个属性?
因为分词器分不出对象字面量和代码块——两者都是 `{`。处在花括号深度上的一切得到同样的处理。解析器会知道区别;这个工具有意不做解析器。
支持 JSX 吗?
不支持。JSX 需要这里没有的解析器——在记号层面 `<Foo>` 和一次比较无法区分,而能应付 `Map<string, T>` 的泛型启发式已经是猜测的极限了。`.tsx` 文件请用 Prettier。
我能用它代替 Prettier 吗?
用来读一个混淆过的打包产物,能——它就是干这个的。用在你准备提交的代码上,不能:它不插入分号,不折长行,对参数列表没有任何主张。Prettier 是从 AST 重新打印的,所以它能。
可以从这些接进来
HTML 美化与压缩
HTML Beautifier & Minifier
格式化或压缩 HTML,保留内联元素,是否折叠空白可选。
CSS 美化与压缩
CSS Beautifier & Minifier
格式化或压缩 CSS,不重排任何声明,原本的记号序列一个不动。
Source Map 还原
Source Map Resolver
用你提供的 source map,把压缩后的堆栈信息映射回原始文件和行号。
WebAssembly 分析
WebAssembly Inspector
列出 .wasm 模块的导入、导出、内存和各段大小,并打印它的文本格式。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
代码截图生成
Code Screenshot
把一段代码渲染成带语法高亮、窗口边框和配色主题的图片。
CSS 美化与压缩
CSS Beautifier & Minifier
格式化或压缩 CSS,不重排任何声明,原本的记号序列一个不动。
HTML 美化与压缩
HTML Beautifier & Minifier
格式化或压缩 HTML,保留内联元素,是否折叠空白可选。
Source Map 还原
Source Map Resolver
用你提供的 source map,把压缩后的堆栈信息映射回原始文件和行号。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。