本文档全面概述了 Airbnb JavaScript 风格指南中使用的 ESLint 规则类别。它解释了规则的组织方式、每个类别的目的以及它们如何协同工作,以在 JavaScript 和 React 应用程序中强制执行一致的代码质量和风格。有关特定 ESLint 配置的信息,请参阅ESLint 配置。
Airbnb JavaScript 风格指南中的 ESLint 规则类别被组织成逻辑组,针对纯 JavaScript 和 React 开发中代码质量、风格和最佳实践的不同方面。
下图说明了 Airbnb JavaScript 风格指南中 ESLint 规则类别的层次结构组织。
来源:packages/eslint-config-airbnb/rules/react.js6-16 packages/eslint-config-airbnb-base/rules/style.js1-4
规则也可以按其解决的关注点类型进行分类。
来源:packages/eslint-config-airbnb/rules/react.js18-420 packages/eslint-config-airbnb-base/rules/style.js3-532
样式规则强制执行一致的代码格式和样式约定。它们侧重于代码的美学方面,而不是功能。
示例包括
来源:packages/eslint-config-airbnb-base/rules/style.js3-535
这些规则强制执行有助于防止错误并促进可维护代码的编码实践。
示例包括
eval()parseInt() 时提供 radix 参数来源:从规则组织推断
专门处理 ECMAScript 2015 (ES6) 特性和语法的规则。
示例包括
const 而不是 let来源:从规则组织推断
用于管理模块导入和导出的规则,以确保一致性并防止错误。
示例包括
来源:从规则组织推断
专为捕获常见编程错误或易出错模式而设计的规则。
示例包括
来源:从规则组织推断
管理变量声明、作用域和使用模式的规则。
示例包括
来源:从规则组织推断
这些规则强制执行特定于 React 组件开发的最佳实践。
示例包括
key 属性用法来源:packages/eslint-config-airbnb/rules/react.js247-297
用于在 JSX 中强制执行一致格式和样式的规则。
示例包括
来源:packages/eslint-config-airbnb/rules/react.js25-26 packages/eslint-config-airbnb/rules/react.js77-82 packages/eslint-config-airbnb/rules/react.js244-245 packages/eslint-config-airbnb/rules/react.js320-321
用于强制执行 React Hooks API 的 Hooks 规则。
示例包括
useEffect 中正确使用依赖项数组useState 中状态值和设置器的命名正确来源:packages/eslint-config-airbnb/rules/react.js572-574
专注于确保 React 应用程序对残障用户可访问的规则。
示例包括
来源:从规则组织推断
ESLint 配置中的每条规则都可以设置为三个严重性级别之一:
| 严重性 | 描述 | 效果 |
|---|---|---|
“error” | 最高严重性 | 导致构建中断/linting 失败 |
“warn” | 中等严重性 | 显示警告,但不导致 linting 失败 |
“off” | 已禁用 | 不强制执行规则 |
Airbnb 风格指南中的大多数规则都设置为“error”级别,这表明其对代码质量的严格要求。
来源:packages/eslint-config-airbnb/rules/react.js176 packages/eslint-config-airbnb/rules/react.js58 packages/eslint-config-airbnb/rules/react.js120
许多规则遵循相似的配置模式。
简单的布尔值规则:仅启用或禁用的规则。
带选项的规则:规则包含一个数组,第一个元素是严重性,后续元素是选项。
带复杂选项的规则:规则具有对象配置。
来源:packages/eslint-config-airbnb/rules/react.js172 packages/eslint-config-airbnb/rules/react.js321 packages/eslint-config-airbnb/rules/react.js62-66
一些 React 规则扩展或覆盖了基础 JavaScript 规则,以适应 React 的特定模式。
来源:packages/eslint-config-airbnb/rules/react.js1-22
下图显示了规则类别如何集成到整体 ESLint 配置结构中。
来源:packages/eslint-config-airbnb/rules/react.js1-6
Airbnb JavaScript 风格指南中 ESLint 规则的分类提供了几个优势:
规则按类别的分布(从配置文件近似估算)。
| 类别 | 近似规则计数 | 描述 |
|---|---|---|
| React/JSX | 70+ | React 和 JSX 特定规则 |
| 风格 | 50+ | 代码格式和样式约定 |
| 最佳实践 | 40+ | 通用 JavaScript 最佳实践 |
| ES6 | 20+ | 现代 JavaScript 特性 |
| 导入 | 15+ | 模块导入/导出模式 |
| 错误(Errors) | 15+ | 错误预防 |
| 变量 | 10+ | 变量声明和使用 |
| A11y | 20+ | 可访问性指南 |
来源:packages/eslint-config-airbnb/rules/react.js18-602 packages/eslint-config-airbnb-base/rules/style.js2-533
ESLint 规则类别直接实现并强制执行 Airbnb JavaScript 风格指南中描述的指南。有关特定规则类别的更多详细信息,请参阅