JavaScript 格式化工具
使用 Prettier 格式化 JavaScript 和 TypeScript,可控制缩进、分号和引号风格。使用真正的解析器,所以模板字面量、正则表达式和 JSX 都能被正确处理。
- 文件永不离开你的设备
- 免费,无需注册
- 无水印
- 加载后可离线使用
如何JavaScript 格式化工具
- 1
粘贴你的代码
JavaScript、TypeScript 或 JSX。
- 2
设置你的风格
缩进、分号和引号偏好。
- 3
复制结果
格式化结果和 Prettier 在你的编辑器里产出的完全一致。
为什么格式化 JavaScript 实际上需要运行 Prettier 本身
Prettier 并不只是这个工具格式化输出的灵感来源——它就是 Prettier 这个包本身,被下载并在你的浏览器里执行,而不是通过服务器上的 Node 运行,所以结果和用同样的配置在本地运行 `npx prettier` 得到的结果逐字节一致。这个区别很重要,因为 JavaScript 格式化真的很难近似实现:要做对,需要完整地解析这门语言,而不是靠模式匹配来猜测,一个只能近似 Prettier 行为的格式化工具,恰恰会在真正重要的边界情况上——一个装饰器内部、一个复杂的泛型类型,或者一个不常见的 JSX 表达式——和项目实际的 Prettier 配置产生分歧。
为什么简单的 JavaScript 格式化工具会在真实代码上出错
JavaScript 包含好几种会让简单的"数大括号数分号"方案彻底失效的结构。模板字面量可以在反引号之间包含任意文本,包括看起来完全像代码的字符——`` `function() { return "not real code"; }` `` 是一个单独的字符串值,不是三条语句,一个不追踪模板字面量边界的格式化工具会误解它。正则表达式字面量更糟:`/{}/` 包含看起来像大括号的字符,但它们其实是正则表达式模式本身的一部分,不是结构语法。自动分号插入带来第三层难度,因为 JavaScript 在很多场合允许省略分号,靠一套规则推断一条语句在哪里结束,而一个基于逐行处理的简单格式化工具根本没办法正确复现这套规则。像 Prettier 那样真正把代码解析成语法树,才能避开这三种失败模式——一个在生产代码上哪怕只搞错其中一种情况的简易格式化工具,都是一种隐患,而不是便利。
Prettier 刻意不做的事
Prettier 只格式化代码——它统一空白、换行、引号风格这类呈现层面的选择——明确不检查代码是否正确、是否类型安全,或者是否存在 bug。一个有类型错误、引用了未定义变量,或者有逻辑错误的文件,只要语法上合法,依然会被毫无怨言地格式化,因为格式化和类型检查是由不同工具处理的不同关注点。TypeScript 自己的编译器,或者像 ESLint 这样的代码检查工具,才是检查正确性的地方;这个工具的职责止步于让代码风格保持一致、易于阅读。
为什么团队会统一到一种共同风格,而不是争论不休
用制表符还是空格、单引号还是双引号、要不要分号——这些选择都不会实质影响代码的运行方式,而围绕它们的争论过去在代码审查中消耗了大量和正确性毫无关系的时间。Prettier 真正的价值主张,是把这场争论彻底从台面上移走:一套小巧、自成一派的格式化规则,自动、一致地应用在每个地方,意味着这场争论只需要在配置里解决一次,而不用在此后的每一个 PR 里反复重演。
匹配某个特定项目的具体配置
这里暴露出来的每一个选项——缩进宽度、分号、引号风格——都对应一个真实的 Prettier 配置项,所以把来自一个已知 `.prettierrc` 配置的项目的代码粘贴进来,并匹配上同样的设置,就能复现出那个项目自己的工具链会产出的确切结果,而不需要为了看一段代码片段会被怎样格式化,而在本地安装任何东西。
常见问题
这和在本地运行 Prettier 是一样的吗?
是的——它就是 Prettier 本身,只是运行在你的浏览器里,而不是运行在 Node 里。用同样的选项,你会得到和 `npx prettier` 处理同一个文件完全一致的输出结果。
为什么不用一个更简单的格式化工具?
因为简单的格式化工具会破坏真实代码。模板字面量和正则表达式内部的大括号、JSX,以及自动分号插入,都需要真正解析这门语言才能正确处理。一个每五十个文件里就悄悄搞坏一个的格式化工具,比没有格式化工具还糟糕。
支持 TypeScript 和 JSX 吗?
支持。类型注解、泛型、装饰器和 JSX 都能被解析。注意它只做格式化——不做类型检查,也不做编译。
为什么格式化失败了?
代码里有语法错误——Prettier 必须先能解析,才能重新输出。错误信息会包含第一个问题所在的行号和列号,通常足够帮你定位。
我的代码会被发送到服务器吗?
不会。Prettier 会被下载到你的浏览器里并在本地运行。私有代码永远不会离开你的机器,而这一点在大多数在线格式化工具上并不成立。