🟨JavaScript 格式化与压缩 - 在线美化 JS、TS、JSX、JSON 代码
从线上扒下来的压缩脚本挤成一行,接手的旧代码缩进混乱,或者只是想把一段 JSON、TypeScript 整理得清楚一些——把代码粘进来就能得到排版整齐的结果。格式化器是手写的:先用完整的词法分析识别字符串、模板字符串(包括嵌套的 ${})、正则表达式与除号、注释、数字和 JSX,再按括号层级重新计算缩进,在分号和代码块后换行,规范运算符、逗号和关键字两侧的空格,对象和数组超过行宽时自动展开,只含数字或字符串的长数组会按行宽填充。它只调整空白:不增删分号、不改引号、不重命名变量,输出与输入的 token 序列完全一致,原有的空行最多保留一行,同一段代码格式化两次结果不变。TypeScript 的泛型、类型注解、可选参数、非空断言、装饰器、私有字段和 JSX 都能正确处理,合法的 JSON 会被识别并逐层展开。压缩模式会删除注释和多余空白(可保留 /*! 版权注释),但在可能触发自动分号插入(ASI)的地方保留换行,因此不写分号的代码压缩后语义不变。所有处理都在浏览器本地完成,代码不会上传。
免费 · 无需注册 · 浏览器本地处理最后更新:
正在加载工具...
如何使用JS 格式化 / 压缩
- 1把 JavaScript、TypeScript、JSX 或 JSON 代码粘贴到左侧输入框
- 2选择格式化或压缩,设置缩进(2/4 空格或 Tab)和行宽
- 3在右侧查看结果,复制或下载 .js / .json 文件
常见问题
- 格式化会改变代码的运行结果吗?
- 不会。格式化只调整空格、换行和缩进,不增删分号、不改引号、不改变量名,输出与输入的 token 序列完全一致;新增的换行只出现在分号、括号和逗号之后等不影响自动分号插入的位置。我们用大量真实的 npm 包源码测试过:格式化和压缩后的代码都能通过 node --check,且 token 序列与原文相同。
- 支持 TypeScript、JSX 和 JSON 吗?
- 支持。TypeScript 的泛型(如 Map<string, T[]>、<T,>() =>)、类型注解、可选参数 x?、非空断言 x!、接口、类型别名、枚举和装饰器都能正确排版;JSX 元素会作为整体保留原样,只按新的缩进整体平移;输入是合法 JSON 时会自动识别并逐层展开。
- 压缩和专业打包工具有什么区别?
- 这里的压缩是“轻量压缩”:删除注释和多余空白,但不重命名变量、不做死代码消除,因此体积减少有限,好处是安全、可读性相对好、不需要构建流程。需要极致体积时,请在项目里使用 esbuild、Terser 等工具。压缩时会在可能触发 ASI 的换行处保留换行,所以不写分号的代码压缩后依然正确。
- 代码会上传到服务器吗?
- 不会。词法分析、格式化和压缩全部在浏览器里由 JavaScript 完成,没有任何网络请求,适合处理公司内部代码或含有密钥的配置文件。