【问题标题】:ESLint config extended with airbnb and prettier, for a react project using typescript, jest and react-hooks使用 airbnb 和 prettier 扩展的 ESLint 配置,用于使用 typescript、jest 和 react-hooks 的 react 项目
【发布时间】:2019-11-02 19:33:48
【问题描述】:

我很困惑如何设置配置文件以及我应该使用哪些配置/插件。

我有一个使用 Typescript、Jest 和 React 钩子的 React 项目。

我知道我需要安装:

  • eslint
  • prettier, eslint-config-prettier, eslint-plugin-prettier
  • eslint-plugin-import

至于Airbnb的配置,我不确定是否需要安装:

  • eslint-config-airbnb, eslint-plugin-react, eslint-plugin-jsx-a11y
  • eslint-config-airbnb-base

这两个好像都不支持Typescript,看来我也需要安装一下:

  • @typescript-eslint/eslint-plugin, @typescript-eslint/parser

对于 Jest,我需要安装:

  • eslint-plugin-jest

我不确定 React 钩子。我是否需要在此处安装其他任何东西,或者其他软件包之一是否包含对它的支持?我看到我可以选择安装:

  • eslint-plugin-react-hooks

这是必须的吗?

现在,对于配置文件,我关心两个方面:extendsplugins

我看到其中一些软件包可以使用/recommended 进行扩展。我应该使用其中任何一个吗? extends 部分应该是什么?我见过将其设置为的示例:

{
  "extends": ["airbnb-base", "plugin:prettier/recommended"]
}

虽然我见过其他使用以下示例的示例:

{
  "extends": ["airbnb", "prettier"]
}

还有一个使用的例子:

{
  "extends": [
    "airbnb",
    "plugin:prettier/recommended",
    "prettier/react"
  ]
}

其他 Typescript、Jest 和 React Hooks 插件呢?例如,eslint-plugin-jest 建议将 "plugin:jest/recommended" 添加到扩展中。这会与其他任何冲突吗?我知道我还可以添加"plugin:@typescript-eslint/recommended""prettier/@typescript-eslint"。是否也应包括在内?

对于plugins 部分,我是否只列出我安装的每个eslint-plugin-.... 软件包?

这是一个例子,请告诉我它的外观:

已安装的包

@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint
eslint-config-airbnb
eslint-config-prettier
eslint-plugin-import
eslint-plugin-jest
eslint-plugin-jsx-a11y
eslint-plugin-prettier
eslint-plugin-react
eslint-plugin-react-hooks
prettier

配置文件:

{
  "extends": [
    "airbnb",
    "plugin:@typescript-eslint/recommended",
    "plugin:jest/recommended",
    "plugin:prettier/recommended",
    "plugin:react/recommended",
    "prettier",
    "prettier/@typescript-eslint"
  ],
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint", 
    "import",
    "jest", 
    "jsx-a11y", 
    "react", 
    "react-hooks"
  ],
}

【问题讨论】:

    标签: eslint prettier eslint-config-airbnb eslintrc


    【解决方案1】:

    以为我会回来回答这个问题。这是我的最终配置:

    module.exports = {
      "env": {
        "browser": true,
        "es6": true,
        "jest": true,
        "node": true
      },
      "extends": [
        "airbnb",
        "plugin:@typescript-eslint/recommended",
        "plugin:import/typescript",
        "plugin:jest/recommended",
        "plugin:react/recommended",
        "plugin:prettier/recommended",
        "prettier",
        "prettier/@typescript-eslint",
        "prettier/react"
      ],
      "parser": "@typescript-eslint/parser",
      "parserOptions": {
        "ecmaVersion": 2018,
        "jsx": true,
        "sourceType": "module",
        "useJSXTextNode": true
      },
      "plugins": ["@typescript-eslint", "import", "jest", "react", "prettier"],
      "rules": {
        "@typescript-eslint/explicit-function-return-type": [
          "error",
          {
            "allowExpressions": true,
            "allowTypedFunctionExpressions": true
          }
        ],
        "@typescript-eslint/explicit-member-accessibility": "off",    
        "import/no-extraneous-dependencies": 0,
        "react/jsx-filename-extension": ["error", { extensions: [".jsx", ".tsx"] }],
        "react/prop-types": [0]
      },
      "settings": {
        "react": {
          "version": "detect"
        }
      }
    }
    

    【讨论】:

    • 您可以将plugins 数组留空。
    猜你喜欢
    • 2022-10-05
    • 2016-12-10
    • 2018-02-22
    • 2021-07-08
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2020-09-09
    • 2017-12-29
    相关资源
    最近更新 更多