格式化器选项理念
配置一个有主见的格式化器。
💡 Biome 遵循与 Prettier 相同的选项理念。现有的格式化选项集被认为是稳定的,不太可能再考虑新增选项。
本文解释了一些关于 Biome 如何以及为何走到今天这一步的历史,以及对未来的展望。
Biome 是一个有主见的格式化器。在理想情况下,这意味着 Biome 认定格式化只有一种正确方式,并且会始终强制执行这种风格。无论什么项目、什么配置,由 Biome 格式化的代码看起来永远一致。从另一个角度看,Biome 本身就是一部自动化风格指南,而不是用来实现其他风格指南的工具。
在格式化上持有如此强烈的立场,看上去可能有些强势,但一旦采用,好处很快就会显现。所有关于空格该放在哪里、某一行要不要拆行、要不要缩进,以及无数类似问题的讨论都会直接消失。琐碎的、关于细枝末节的争论不再妨碍大家专注于真正重要的事。代码评审从此不再有重新格式化的要求和循环往复的辩论。你只需要相信 Biome 会尽最大努力,把代码格式化得干净、易读、一致。
除了对单个团队和组织的益处之外,在整个 Web 生态中采用一致的格式化器对所有人都有好处:在多个项目之间切换时更容易保持熟悉感,也能帮助新人更直观地学习和识别代码模式,不受干扰。
在当今的 Web 生态中,Prettier 是目前最受欢迎的代码格式化器,它同样立场鲜明,并且对新增选项抱有 严格的理念。Biome 的目标是与 Prettier 在很大程度上保持兼容,因此它采纳了 Prettier 所体现的许多主张,配置也不例外。
Biome 为能达到与 Prettier 如此高的兼容性、并让用户的迁移路径尽可能无痛而感到自豪,但这同样伴随着类似的限制。
现有选项
Biome 起步时只提供了一小部分配置选项,针对 JavaScript 生态中最常见、也最有争议的风格约定:缩进风格(制表符还是空格)、缩进宽度(2 个空格等于一个制表符,还是 4 个?),以及强制分号。为这几点提供选项被认为已足以满足大多数人的需求,并没有强烈考虑添加其他选项。
借助 Prettier 的选项理念,Biome 有机会从零开始,避开 Prettier 在其他现有选项中踩过的坑,例如 --bracket-same-line 和 --arrow-parens:
…[这些]并不是我们乐于拥有的选项。它们会在团队中引发大量细枝末节的争论,对此我们很抱歉。这些选项如今难以移除,它们作为历史遗留而存在,不应成为增加更多选项的理由(「如果那些选项都能存在,为什么这一个不行?」)。
然而,当 Prettier Challenge 公布时,Biome 决定接受这项挑战,而要完全兼容,就需要实现 Prettier 具备的所有配置选项。
Biome 仍然认同 Prettier 对这些选项的理念,并把它们视为出于兼容性的遗留特性,而非基线功能集。它们的存在并不表示将来会添加更多选项,也不应被当作支撑未来其他选项存在的理由。
新增选项
和 Prettier 一样,Biome 认为当前的选项集已经稳定、够用,不再接受新增或其他改动。关于额外配置选项的请求不太可能被考虑,并且可能不经讨论就被关闭。
话虽如此,尽管 Biome 已经确立了自己作为一款强大而稳健的格式化工具的地位,它仍然相对较新,这意味着有充足的机会为那些原本看似不可行的新进展和新想法铺路。
Biome 的格式化风格也被认为相对稳定,会尽可能继续与 Prettier 保持一致,只有 少数有意为之的偏离。对 Biome 风格的改动可能会被考虑并实现。不过,这些改动同样不太可能成为可配置的选项,而是会在 Biome 所有未来版本中统一应用。