【问题标题】:ESLint with Airbnb style guide does not work for all rules带有 Airbnb 风格指南的 ESLint 不适用于所有规则
【发布时间】:2022-01-08 11:43:15
【问题描述】:

最近我开始查看各种 JavaScript 样式指南,我最喜欢 Airbnb

但是,当我使用 Airbnb 样式指南配置 ESLint 时,我注意到他们的文档中定义的一些规则根本没有检查。例如:

  1. Group all your consts and then group all your lets.
  2. Use shortcuts for booleans, but explicit comparisons for strings and numbers.
  3. Use // for single line comments. Place single line comments on a newline above the subject of the comment. Put an empty line before the comment unless it’s on the first line of a block.

那么,如果以这段代码为例:

const array = [1, 2, 3, 4, 5];
let foo = 'foo';
const bar = 'bar';

if (array.length) {
  console.log('Bar:', bar);
  // Chaniging foo
  foo = 'baz';
  console.log('Foo:', foo);
}

linter 应该抛出 3 个错误:

  1. 我没有对所有 consts 和所有 let 进行分组,而是按顺序定义它们。
  2. 我没有在 if 语句中使用显式比较 - array.length > 0
  3. 我没有在评论前添加新行。

但是,linter 不会抛出任何错误。

【问题讨论】:

  • specifies 看到了什么规则?这些规则是否包括您上面列出的那些?
  • 我应该在您的链接中检查什么?我刚刚在我的.eslintrc.json 中使用airbnb-base 扩展了ESLint 配置。
  • 该链接用于 eslint-config-airbnb-base 包的逻辑。您可以浏览每个文件并检查包中包含哪些规则,然后比较您在问题中列出的规则是否包含在包中。如果没有,除了 airbnb-base 附带的内容之外,您始终可以添加这些规则。您的问题是“这是否意味着 eslint-config-airbnb-base 不包含 Airbnb 样式指南建议的所有规则”,您可以使用源代码检查包含的内容和不包含的内容。
  • 我明白了。我不知道在我的示例中进行检查的 ESLint 规则的名称,因此很难检查它们是否存在于链接中的文件中。由于eslint-config-airbnb-base 是由他们创建的,我认为它应该支持他们在文档中添加的所有规则。我随机检查了不同的规则来验证它们,这 3 个没有被验证,所以我猜可能还有更多。

标签: javascript eslint eslint-config-airbnb airbnb-js-styleguide


【解决方案1】:

Airbnb 风格指南是关于如何编写代码的建议
ESLint 是由一个单独的团队创建的工具,首先是 Nicholas C. Zakas。
所以推荐使用 ESLint 来自动检查一些规则,但不是全部。

一些 Airbnb 风格指南规则有尾随 eslint: rule-name,这表明它是否被选中。该主题的所有 3 条规则都没有。
还有一个page 详细说明了新规则的添加。它声明:“截至 2020 年,我们只接受与新 ECMAScript 功能相关的规则。我们更喜欢在插件中实现新规则”。

【讨论】:

  • 你的回答没那么有用。无论如何,我会给你赏金,这样就不会浪费了。
  • @NenadMilosavljevic 谢谢!幸运的是,我刚刚找到了一个 eslint 规则,它应该在评论 eslint.org/docs/rules/lines-around-comment 之前设置一个新行。奇怪的是 Airbnb 风格指南没有提到它。此外,可能还有对其他规则的检查的其他实现,例如在 Prettier 中,但我找不到。
  • 是的,我也找到了那个。但我认为所有这些都应该包含在官方的 airbnb 插件配置中,因为这些指南包含在文档中。
  • @NenadMilosavljevic 好吧,配置只是 eslint 提供的可用选项的组合。如果没有这样的选项,比如有些事情是 eslint 不能做的(而且作者认为可能不应该做),就不可能有这样的配置。而且可能 Airbnb 从未尝试过自动检查他们的所有建议。
  • 是的,我同意...不过他们可以自己创建插件并添加新规则...当我问这个问题时,我只是没有想到这一点。
猜你喜欢
  • 2021-03-17
  • 2019-08-24
  • 2017-12-29
  • 2018-07-31
  • 2018-08-24
  • 1970-01-01
  • 2021-05-03
  • 2011-07-08
  • 2010-12-10
相关资源
最近更新 更多