将ESLint与Airbnb样式和制表符一起使用(React.js)

时间:2016-11-27 23:19:26

标签: javascript reactjs webpack eslint

我正在研究一个React.js应用程序而我正在尝试lint我的代码。我使用Airbnb风格的ESLint,但我有这些错误:

../src/Test.jsx
  4:2   error  Unexpected tab character                                no-tabs
  5:2   error  Unexpected tab character                                no-tabs
  5:3   error  Expected indentation of 2 space characters but found 0  react/jsx-indent
  6:2   error  Unexpected tab character                                no-tabs

这是我的代码:

Test.jsx:

import React from 'react';

function Test() {
    return (
        <h1>Test</h1>
    );
}

export default Test;

.eslintrc:

{
  "env": {
    "browser": true,
    "es6": true,
    "node": true
  },
  "extends": "airbnb",
  "parser": "babel-eslint",
  "rules": {
    "indent": [2, "tab", { "SwitchCase": 1, "VariableDeclarator": 1 }],
    "react/prop-types": 0,
    "react/jsx-indent-props": [2, "tab"],
  }
}

如上所示,我想缩进标签。

webpack.config.js:

loaders: [{
  test: /\.jsx$|\.js$/,
  loaders: ["babel-loader", "eslint-loader"],
  exclude: /node_modules/
},
...
]

我还试图缩进为什么有2个空格,但没有成功。我真的不明白为什么我有这些错误。你有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:7)

正如@ mark-willian告诉我的那样,我在 .eslintrc 中添加了一些内容并且有效:

{
    "env": {
        "browser": true,
        "es6": true,
        "node": true
    },
    "extends": "airbnb",
    "parser": "babel-eslint",
    "rules": {
        "indent": [2, "tab", { "SwitchCase": 1, "VariableDeclarator": 1 }],
        "no-tabs": 0,
        "react/prop-types": 0,
        "react/jsx-indent": [2, "tab"],
        "react/jsx-indent-props": [2, "tab"],
    }
}

感谢您的所有答案。

答案 1 :(得分:1)

airbnb规则要求您使用空格而不是制表符来格式化代码。好的编辑器(sublime是一个!)将允许您使用选项卡,但在保存代码时将它们转换为空格。

您需要更改sublime的配置;转到偏好设置 - 设置并自定义以下设置:

"tab_size": 2,
"translate_tabs_to_spaces": true

Sublime会转换您现有的代码 - 点击右下方状态栏中显示标签或空格的文字。

如果(例如)某个airbnb规则与您的编码风格指南不匹配,您可以有选择地关闭eslint规则。

答案 2 :(得分:0)

尝试替换every tab to spaces

在webpack配置中使用ESLint autofix启用this eslint-loader option功能也是一个好主意。