Prettier 强制无卷曲的单行 if 语句位于同一行,而不是位于下面

Kon*_*ten 20 brackets typescript eslint prettier

阅读EsLint 的文档后,我使用规则curly set 来警告条件语句中的多行或嵌套行语句。

"rules": {
  "curly":["warn", "multi-or-nest"],
  "quotes":"warn"
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但是当代码令我满意时,Prettier 给我一个错误,建议条件后面的语句应该放在一行上,这不是我想要的(我也不想使用不必要的花括号) )。

// Preferred style
if(condition)
  doSomething();

if(condition) {
  doSomething();
  doSomethingElse();
}

// Prettier style
if(condition) doSomeSome();

if(condition) {
  doSomething();
  doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

我已经检查了 Prettier 的文档,但与我寻找的最接近的是括号间距,这根本不是我想要的。据我所知,没有什么关于多行包围的事情。

我怎样才能让 Prettier 表现得符合我的喜好?(第二个问题:除了官方文档之外,我在哪里可以找到有关其他规则的更多信息?)

注意。不久前提出的一个有点类似的问题没有得到答案,评论建议发帖者接受 Prettier 想要的方式(即强制多余的卷发)。在我看来,计算机告诉我喜欢什么,而不是我告诉它我的some_rc.json文件,这似乎是错误的。

我还发现了一个冗长的讨论,证明自 2017 年以来一直需要这样的选项,所以我倾向于假设它已经实现了(因为我发现很难相信设计者只是无视了这些愿望)。我错了吗?

Rob*_*ier 38

答案是不。正如您链接的问题所述:

\n
\n

我们现在已经过了 1.0,我们不会再像这样改变核心打印了。对不起!

\n

如果你想在下一行打印代码,可以添加{}。如果你真的想要这种行为,请随意 fork prettier。

\n
\n

但更深层的一点是,Prettier 非常固执己见。我绝对明白为什么这个词会让非英语母语人士感到困惑。确实有点像“别人评价很高”。但“固执己见”意味着“坚信自己的观点”,在软件世界中意味着“故意缺乏配置”。

\n

Prettier Option Philosophy页面总结了他们的政策:

\n
\n

由于历史原因,Prettier 有一些选择。但我们不会\xe2\x80\x99t添加更多...... Prettier并不是一个厨房水槽代码格式化程序,它试图以您希望的任何方式打印您的代码。这是固执己见的。

\n
\n

为什么会这样:

\n
\n

到目前为止,采用 Prettier 的最大原因是停止所有正在进行的关于风格的争论。

\n
\n

对于许多球队来说,这是一个有价值的目标。Go 语言以gofmt完全不接受任何选项而闻名。几乎每个人都在每个文件上使用它,因此无论您在哪个团队,Go 代码的格式始终完全相同。您不能争论制表符、空格、卷曲位置或其他任何内容。Go 看起来就像gofmt它所说的那样,即使在某些情况下它有点奇怪。回去工作。:D

\n

并非每个团队都会喜欢 Prettier 的选择,但这很好。许多团队(几乎肯定是大多数团队)不使用它。但如果您确实使用它,您注册的不仅仅是一个工具;而是一个工具。您正在签署他们的风格选择。

\n

  • 这是我见过的最好的答案之一。我希望你在一周前发布它,这样我就可以节省相当多的时间,也可以避免将头撞到墙上的挫败感。(当然,在我问之前你这样做有点困难,呵呵。)我删除了我的评论,我建议你也这样做,也将这条评论标记为删除。谢谢您的一切。 (3认同)
  • 我第一次听说“自己去分叉”,哈哈 (2认同)