选项设计哲学
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
Prettier 因历史原因保留了一些选项,但我们不会再新增任何选项。
请继续阅读以了解更多。
Prettier 并非面面俱到的代码格式化工具,不会按你的所有要求格式化代码。它是_有主见的_。正如为什么选择 Prettier?页面所述:
采用 Prettier 的最大原因,就是彻底终结无休止的代码风格争论。
然而 Prettier 的选项越多,就离这个目标越远。风格争论只会转变为关于该使用哪些 Prettier 选项的争论。格式战争将以新的形式爆发:"哪个选项值更好?为什么?我们选对了吗?"
这还不是选项的唯一代价。要了解其更多弊端,请参阅这篇抵制添加配置的讨论,它的点赞数远超任何新增选项的请求。
那么为什么还存在这些选项呢?
-
少数选项在 Prettier 早期引入,只为推动项目起步。🚀
-
个别选项因"强烈需求"而添加。🤔
-
部分选项出于兼容性考虑而保留。👍
存在合理性的选项包括:
-
--trailing-comma=es5让你在大多数环境中使用尾随逗号而无需转译(函数参数尾随逗号在 ES2017 中引入)。 -
--prose-wrap对支持各种非标准 Markdown 渲染器至关重要。 -
--html-whitespace-sensitivity因 HTML 糟糕的空格处理规则而必须存在。 -
--end-of-line帮助团队避免 CRLF 进入 git 仓库。 -
--quote-props对高级使用 Google Closure Compiler 的场景很重要。
但另一些选项如今看来难以合理化:--arrow-parens、--jsx-single-quote、--bracket-same-line 和 --no-bracket-spacing 并非我们乐于保留的类型。它们导致团队陷入大量琐事争论,我们为此致歉。这些选项作为历史遗留产物难以移除,但不应成为新增选项的理由("既然_那些_选项存在,为何不能加这个?")。
长期以来,我们保持选项请求开放以便收集反馈。这些年我们明白:真实需求难以量化。Prettier 用户量激增,昔日的"强烈需求"如今已不足道。GitHub 点赞和 Twitter 投票失去代表性,沉默的大多数呢?看似"再加一个选项"很简单,但界限在哪里?何时才算过多?即便添加了"最后一个选项",问题追踪器里总会出现新的"最高票请求"。
然而终止的时刻已至。Prettier 现已成熟稳定,被众多组织和项目采用,调研阶段结束。我们有充分信心断言:选项集合应该"冻结"了。不再接受新增选项请求。 感谢所有参与这段艰难旅程的贡献者。
请注意:由于选项请求超出 Prettier 范围,相关讨论将直接关闭。保留输入格式元素(如换行符)的请求同理——这不过是伪装的选项,具有"真实"选项的所有弊端。技术上不可避免的情况除外(如兼容性需求),但格式化相关选项的决策已是最终定论。