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

问题描述 投票:0回答:2

阅读 EsLint文档后,我使用规则 curly 设置为对条件语句中的 多个或嵌套

行语句发出警告。
"rules": {
  "curly":["warn", "multi-or-nest"],
  "quotes":"warn"
}

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

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

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

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

我已经检查了 Prettier 的文档,但与我寻找的最接近的是 bracketSpacing

,这根本不是我想要的。据我所知,没有什么关于多行包围的事情。

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

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

我还发现

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

typescript eslint brackets prettier
2个回答
33
投票
答案是否定的。作为

问题,您链接注释:

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

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

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

Prettier

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

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

为什么会这样:

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

对于很多球队来说,这是一个值得实现的目标。 Go 语言中著名的

gofmt

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

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

我很困惑! 我写这篇文章是因为我想知道是否有一种方法可以让 Prettier 允许单行、无 {} 的 if 语句。显然是单动的。

0
投票
我所有的单行 If 都被改为带有 {} 的 3 行,我觉得这非常烦人。但读了上面的内容,单行的单动作应该是更漂亮的方式。 他们似乎很确定这是更漂亮的方式或高速公路......但他们改变主意了吗?

如果重要的话,我在 VS Code 中运行 Monkey C(Garmin IQ 的东西)......

© www.soinside.com 2019 - 2024. All rights reserved.