【问题标题】:ESLint configuration for JSXJSX 的 ESLint 配置
【发布时间】:2016-09-17 11:17:26
【问题描述】:

我想配置 ESLint 以检查我的 JSX 文件,但我的配置不起作用。正确的方法是什么?

.eslintrc.js:

module.exports = {
  extends: 'airbnb',
  parserOptions: {
    ecmaFeatures: {
      jsx: true
    }
  },
  plugins: [
    'react',
  ],
  parser: 'babel-eslint'
};

【问题讨论】:

  • 您遇到了什么错误或问题?
  • Eslint 不扫描 jsx 文件。

标签: reactjs jsx eslint


【解决方案1】:

仅仅为了 lint JSX 文件配置是不够的。您的配置看起来不错(尽管您可能不需要babel-eslint,除非您使用的功能低于第 4 阶段提案)。默认情况下,ESLint 只会处理 .js 文件。您必须通过在命令行上使用--ext 标志来告诉它您也想处理.jsx 文件:eslint --ext .jsx .

【讨论】:

  • 现在 ESLint 扫描 jsx 但不扫描 js
  • eslint --ext .jsx --ext .js . 将扫描两者。
  • 这样可以减少冗长eslint --ext .js,.jsx .
  • 可以去掉前面的扩展点,如:eslint --ext js,jsx .
【解决方案2】:

我找到了原始答案的替代方案,这样您在运行eslint 命令时就不必指定参数。

选项 1

使用命令eslint . --ext .js --ext .jsx

选项 2

在您的 eslint 配置中指定 overrides...

//.eslintrc
{
  ...
  "overrides": [
    {
      "files": ["*.jsx", "*.js"]
    }
  ],
  ...
}

【讨论】:

  • 选项 2 仅在所有规则都放置在此覆盖对象中时才有效,如果您要扩展其他配置,则此选项无用。
【解决方案3】:

我建议你也使用 eslint 的插件https://github.com/yannickcr/eslint-plugin-react

你可以做这个示例配置:

'use strict';

module.exports = {
  'extends': [ 'plugin:react/recommended' ],
  'parserOptions': {
    'ecmaFeatures': {
      'jsx': true
    }
  },
  'plugins': [ 'react' ],
  'rules': {

    // React
    'react/forbid-prop-types': 'error',
    'react/no-multi-comp': [ 'error', { 'ignoreStateless': true }],
    'react/no-set-state': 'error',
    'react/no-string-refs': 'error',
    'react/prefer-es6-class': 'error',
    'react/prefer-stateless-function': 'error',
    'react/require-extension': 'error',
    'react/require-render-return': 'error',
    'react/self-closing-comp': 'error',
    'react/sort-comp': 'error',
    'react/sort-prop-types': 'error',
    'react/wrap-multilines': 'error',

    // JSX
    'react/jsx-boolean-value': 'error',
    'react/jsx-closing-bracket-location': 'error',
    'react/jsx-curly-spacing': [ 'error', 'always' ],
    'react/jsx-equals-spacing': 'error',
    'react/jsx-first-prop-new-line': 'error',
    'react/jsx-handler-names': 'error',
    'react/jsx-indent-props': [ 'error', 2 ],
    'react/jsx-indent': [ 'error', 2 ],
    'react/jsx-key': 'error',
    'react/jsx-max-props-per-line': [ 'error', { 'maximum': 3 }],
    'react/jsx-no-bind': 'error',
    'react/jsx-no-literals': 'off',
    'react/jsx-no-target-blank': 'error',
    'react/jsx-pascal-case': 'error',
    'react/jsx-sort-props': 'error',
    'react/jsx-space-before-closing': 'error'
  }
};

【讨论】:

  • 这个eslint 配置文件对于一个有3个开发人员的小项目来说足够好吗?
  • 是的,它可能是合适的,或者您可以使用像 npmjs.com/package/eslint-config-airbnb 这样的配置,其中包含很多开箱即用的好东西
  • 但是我看到一些关于airbnb的文章,在这些文章中写了airbnb eslint 很烦人,使开发变得困难和缓慢。对吗?
  • 我认为 eslint 的重点是对代码的编写方式进行严格限制。 Airbnb 配置是行业标准,如果您的开发人员抱怨这可能是因为他们不使用严格的配置。我个人认为有一个非常紧凑的 eslint 配置是非常好的,它不允许懒惰的开发人员做他们认为容易的事情。
  • 这不仅仅是对代码风格的严格要求,airbnb 有很好的规则来检测潜在的错误、性能问题和其他事情
猜你喜欢
  • 2016-07-11
  • 2021-09-27
  • 2018-12-23
  • 2018-08-22
  • 2018-11-27
  • 2021-12-09
  • 2016-12-11
  • 2018-07-04
  • 2021-12-31
相关资源
最近更新 更多