使用 airbnb 和 prettier 扩展的 ESLint 配置,用于使用 typescript、jest 和 react-hooks 的反应项目
ESLint config extended with airbnb and prettier, for a react project using typescript, jest and react-hooks
我很困惑如何设置配置文件以及 configs/plugins 我应该使用哪个。
我有一个使用 Typescript、Jest 和 React hooks 的 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
这是必需的吗?
现在,对于配置文件,我关心两个方面:extends
和 plugins
。
我看到其中一些软件包可以使用 /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"
],
}
以为我会回来回答这个问题。这是我的最终配置:
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"
}
}
}
我很困惑如何设置配置文件以及 configs/plugins 我应该使用哪个。
我有一个使用 Typescript、Jest 和 React hooks 的 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
这是必需的吗?
现在,对于配置文件,我关心两个方面:extends
和 plugins
。
我看到其中一些软件包可以使用 /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"
],
}
以为我会回来回答这个问题。这是我的最终配置:
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"
}
}
}