Eslint AirBNB 有 4 个空格用于缩进

Posted

技术标签:

【中文标题】Eslint AirBNB 有 4 个空格用于缩进【英文标题】:Eslint AirBNB with 4 spaces for indent 【发布时间】:2018-07-31 19:21:03 【问题描述】:

我正在配置 eslint,并且正在使用 AirBNB 样式指南。

我想将缩进(应该是 2 个空格)改成 4 个空格。但无论我在 .eslintrc 中做什么,我都无法抑制此错误,因此我可以使用 4 个空格的缩进。

我的代码库中到处都有消息“预期缩进 2 个空格,但发现 4 个。(react/jsx-indent)”。

我正在使用 eslint 4.9.0。我该如何解决这个问题?谢谢。

【问题讨论】:

github上的相关问题github.com/yannickcr/eslint-plugin-react/issues/1141 感谢您的回复,但不幸的是,这是用于缩进道具,而不是用于一般代码。 另一种方法是完全删除这个插件(直到核心团队改善用户体验 - 因为一个额外的空白或缩进,抛出Failed to compile 没有意义):npm remove @vue/cli-plugin-eslint 【参考方案1】:

好的,所以这相对容易做到,可以通过将以下内容添加到您的 eslint 配置中来实现:

// Indent with 4 spaces
"indent": ["error", 4],

// Indent JSX with 4 spaces
"react/jsx-indent": ["error", 4],

// Indent props with 4 spaces
"react/jsx-indent-props": ["error", 4],

【讨论】:

我应该在哪里添加它? eslint 配置文件在哪里? 这导致语句(如开关)被展平。例如,case xyz: 将被要求与switch (cond) 处于同一级别。 @OhadR 编辑了答案以反映您的问题 @OhadR 将其添加到 eslint 配置的 rules 属性中,该属性应该是项目根目录中的 .eslintrc 文件(与 package.json 文件相同的文件夹),尽管扩展名为的文件各不相同。它也可以在您的package.json 中。【参考方案2】:

上面的代码应该添加到 ESlint 配置中的 rules 字段中。

module.exports = 
"extends": "eslint:recommended",
"rules": 
    // enable additional rules
    "indent": ["error", 4],
    "linebreak-style": ["error", "unix"],
    "quotes": ["error", "double"],
    "semi": ["error", "always"],

    // override default options for rules from base configurations
    "comma-dangle": ["error", "always"],
    "no-cond-assign": ["error", "always"],

    // disable rules from base configurations
    "no-console": "off",

[Source - 参见使用“eslint:recommended”]

【讨论】:

这似乎比 OP 要求的要多。 这是对@OhadR 提出的关于这些规则应该放在哪里的问题的回答。这是 ESlint 配置的示例。【参考方案3】:

由于接受的答案不完整并且该答案的编辑队列已满,我添加了以下补充:

要简单地禁用 2-space ident 规则,将以下行添加到 esling 配置文件的 rules 属性:

"indent": "off",

要覆盖规则(可能是您想要的)要检查 4 个空格而不是 2 个空格,请添加以下行:

"indent": ["error", 4],

应该是这样的:

// eslintrc.js
module.exports = 
  "extends": [
    "eslint:recommended",
    "airbnb",
  ],
  "rules": [
    "indent": ["error", 4],
  ],
;

ESLint 配置位置

您的 eslint 配置可能在以下任何文件中:

    .eslintrc.js .eslintrc.cjs .eslintrc.yaml .eslintrc.yml .eslintrc.json .eslintrc 或者它可能在您的package.json 中,在"eslintConfig" 属性中。

更多关于 eslint 配置:https://eslint.org/docs/user-guide/configuring

【讨论】:

以上是关于Eslint AirBNB 有 4 个空格用于缩进的主要内容,如果未能解决你的问题,请参考以下文章

Airbnb、ESLint、Prettier 在 Switch 和 Case 缩进上的冲突

当“缩进”规则设置为“制表符”时,ESLint“意外的制表符”

预期缩进 4 个空格,但发现 0

Webstorm 的 Tab 键怎样调整缩进值? 调节成缩进成2个空格或者4个空格

具有 4 个空格缩进的 Vue-CLI

如何使用 ESLint + Prettier + Airbnb 规则 + TypeScript + Vetur 配置 Vue CLI 4?