菜单

ESLint 配置

相关源文件

此页面提供了 Airbnb JavaScript 风格指南仓库中 ESLint 配置的概述。它解释了不同配置包和入口点的结构、目的和用法。有关特定规则类别的信息,请参阅 ESLint 规则类别

概述

Airbnb JavaScript 风格指南仓库提供了两个主要的 ESLint 配置包:

  1. eslint-config-airbnb:包含 React/JSX 规则的完整配置。
  2. eslint-config-airbnb-base:不包含 React 特定规则的基础 JavaScript 配置。

这些配置实现了 Airbnb JavaScript 风格指南中所述的编码标准,作为可强制执行的 ESLint 规则,使开发人员能够自动根据这些标准检查其代码。

配置优先级

来源:packages/eslint-config-airbnb/package.json1-97 packages/eslint-config-airbnb-base/package.json1-92

配置包

eslint-config-airbnb

包含 JavaScript 和 React/JSX 规则的PRIMARY配置。它通过添加 React 特定的规则来构建 eslint-config-airbnb-base

对等依赖项

eslint (^7.32.0 || ^8.2.0)
eslint-plugin-import (^2.30.0)
eslint-plugin-jsx-a11y (^6.10.0)
eslint-plugin-react (^7.36.1)
eslint-plugin-react-hooks (^5.1.0)

来源:packages/eslint-config-airbnb/package.json87-93

eslint-config-airbnb-base

Foundation配置,仅包含与 JavaScript 相关的规则,不包含 React 支持。这适用于 Node.js 项目或不使用 React 的前端项目。

对等依赖项

eslint (^7.32.0 || ^8.2.0)
eslint-plugin-import (^2.30.0)

来源:packages/eslint-config-airbnb-base/package.json82-85

入口点

这两个配置包都提供了多个入口点以适应不同的用例。

入口点结构

来源:packages/eslint-config-airbnb/package.json5-16 packages/eslint-config-airbnb-base/package.json5-18

eslint-config-airbnb 入口点

入口点目的用途
默认 (index.js)包含 ES6+ 和 React 在内的完整规则集"extends": "airbnb"
/hooks添加 React Hooks 特定规则"extends": ["airbnb", "airbnb/hooks"]
/whitespace仅强制执行空格规则,其他规则设置为警告"extends": "airbnb/whitespace"
/base已弃用,请改用 eslint-config-airbnb-base
/legacy已弃用,请改用 eslint-config-airbnb-base/legacy

来源:packages/eslint-config-airbnb/README.md1-88

eslint-config-airbnb-base 入口点

入口点目的用途
默认 (index.js)现代 JavaScript (ES6+) 的完整规则集"extends": "airbnb-base"
/legacy兼容 ES5 及更早版本的规则"extends": "airbnb-base/legacy"
/whitespace仅强制执行空格规则,其他规则设置为警告"extends": "airbnb-base/whitespace"

来源:packages/eslint-config-airbnb-base/README.md1-96

规则组织

Airbnb 配置中的 ESLint 规则按关注点进行分类。这种逻辑分组使得理解、维护和扩展配置更加容易。

规则类别结构

来源:packages/eslint-config-airbnb/package.json5-16 packages/eslint-config-airbnb-base/package.json5-18

规则严重性分布

Airbnb ESLint 配置在规则严重性方面有特定的方法。

这种分布突显了 Airbnb 对严格代码质量执行的重视,绝大多数规则都设置为“error”级别。

来源:packages/eslint-config-airbnb/package.json1-97 packages/eslint-config-airbnb-base/package.json1-92

安装与使用

安装 eslint-config-airbnb

安装配置及其对等依赖项的推荐方法。

然后在项目的 .eslintrc 文件中:

要启用 React Hooks 规则:

安装 eslint-config-airbnb-base

然后在项目的 .eslintrc 文件中:

对于 ES5 项目:

来源:packages/eslint-config-airbnb/README.md16-59 packages/eslint-config-airbnb-base/README.md19-62

版本兼容性

两个配置包都与特定的 ESLint 版本保持兼容。

配置ESLint 兼容性
eslint-config-airbnb v19.xESLint v7.32.0+ 或 v8.2.0+
eslint-config-airbnb-base v15.xESLint v7.32.0+ 或 v8.2.0+

Node.js 版本要求

  • eslint-config-airbnb: Node.js ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0
  • eslint-config-airbnb-base: Node.js ^10.12.0 || >=12.0.0

来源:packages/eslint-config-airbnb/package.json87-95 packages/eslint-config-airbnb-base/package.json82-87

近期变更

两个配置包的最新主版本都引入了多项重大更改。

eslint-config-airbnb (v19.0+)

  • 增加了对 ESLint v8 的支持
  • 更新了 React Hooks 规则
  • 改进了对较新 React 功能的配置

eslint-config-airbnb-base (v15.0+)

  • 增加了对 ESLint v8 的支持
  • 在 package.json 中添加了 exports 字段以改进模块解析
  • 改进了函数括号换行规则

来源:packages/eslint-config-airbnb/CHANGELOG.md1-77 packages/eslint-config-airbnb-base/CHANGELOG.md1-19