如何使代码更美观,当缺少括号时添加到if/else语句中。

15

我已经谷歌搜索了一段时间,没有找到如何做这个的方法。我的项目中已经设置了eslint和prettier。

// What I have:
if (a == b) doSomething();

// What I want from either eslint or prettier
if (a == b) {
  doSomething();
}

有没有人能告诉我如何完成这个任务?或者给我展示一下他们的配置文件是如何实现这个的?
1个回答

16

简述:为您的项目创建 .eslintrc.json 文件并为花括号创建规则。

{
    "rules": {
        "curly": "error",
    }
}

Prettier只打印代码,不会对其进行转换。这是为了限制Prettier的范围。让我们专注于打印,并做到最好!

以下是Prettier不包括在内的一些例子:

  • 添加/删除{}和return(如果它们是可选的)。
  • 将?:转换为if-else语句。
  • 排序/移动导入、对象键、类成员、JSX键、CSS属性或任何其他内容。除了作为变换而不仅仅是打印(如上所述)之外,排序可能是不安全的,因为存在副作用(例如导入),并且很难验证最重要的正确性目标。
  • 将单引号或双引号字符串转换为模板文字或反之亦然。

因此,如果要获得您想要的结果,您应该使用eslint。ESLint具有--fix选项和一个适用于all的规则,这将提供您想要的精确结果。

VSCode中的ESLint。

ESLint配置。

希望这可以帮助到您。


2
这是不正确的;prettier确实可以转换代码。例如,prettier --write . - leecbaker
文档中说所有是默认选项,但我确实需要明确添加它来在所有情况下强制执行该规则(对于一行代码未起作用)。 - Johan Maes
文档上说默认选项是全部的,但我确实不得不明确地添加它来强制在所有情况下都遵守规则(对于一行代码无效)。 - undefined
@JohanMaes 我有点难以理解你的评论;你是在谈论eslint还是prettier?是哪个选项? - knocte
@leecbaker 所以,prettier可以添加括号吗? - knocte
1
@knocte 我不得不在ESLint规则中添加all才能使其正常工作:curly: ['error', 'all'] - Johan Maes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接