菜单

专用配置

相关源文件

目的与范围

本文档详细介绍了 Airbnb JavaScript 风格指南仓库提供的专用 ESLint 配置。这些配置是主 ESLint 配置的变体,用于解决特定用例,例如对旧代码的支持、以空格为重点的 linting 以及 React Hooks 规则。这些专用配置允许团队渐进式地采用 Airbnb 风格指南,或者在完全采用可能不合适的特定场景下使用。

有关主 ESLint 配置的信息,请参阅 eslint-config-airbnb-baseeslint-config-airbnb

专用配置概述

Airbnb JavaScript 仓库提供了多个专用配置,它们扩展或修改了基本配置以满足特定需求。

来源: packages/eslint-config-airbnb-base/whitespace.js1-61 packages/eslint-config-airbnb/whitespace.js1-61 packages/eslint-config-airbnb-base/legacy.js1-34

空格配置

空格配置(airbnb-base/whitespace.jsairbnb/whitespace.js)将非空格规则的严重级别从错误改为警告。这使得团队可以专注于修复空格和格式化问题,同时了解其他规则的违规情况,但不会被其阻止。

空格配置的工作原理

空格配置使用以下过程:

  1. 它从 eslint-config-airbnb-baseeslint-config-airbnb 配置开始。
  2. 它识别出与空格相关的规则列表。
  3. 对于基本配置中的每一条规则:
    • 如果该规则是空格规则且严重级别为错误,则保持为错误。
    • 如果该规则不是空格规则且严重级别为错误,则将其严重级别更改为警告。
    • 所有其他规则保持不变。

此过程在 onlyErrorOnRules 函数中实现,该函数接收要保留为错误的规则列表和基本配置,并返回修改后的配置。

来源: packages/eslint-config-airbnb-base/whitespace.js25-47 packages/eslint-config-airbnb/whitespace.js25-47

实现细节

空格配置的实现处理了不同的规则配置格式

规则格式示例转换
字符串'error''warn'
数字21
数组['error', {...options}]['warn', {...options}]

该配置使用 ESLint CLIEngine 从基础配置中检索完整的规则集,确保所有规则都得到正确处理。

来源: packages/eslint-config-airbnb-base/whitespace.js15-23 packages/eslint-config-airbnb/whitespace.js15-23

旧版配置

旧版配置(airbnb-base/legacy.js)为不使用 ES6+ 功能的旧 JavaScript 代码库提供了一套规则。此配置对于维护或逐步更新旧代码同时遵循良好实践非常有用。

旧版配置的结构

旧版配置:

  1. 包括最佳实践、错误、Node.js、样式和变量的规则集。
  2. 排除了常规配置中包含的 ES6 和 imports 规则集。
  3. 修改了多条规则以适应旧的 JavaScript 模式:
    • comma-dangle:设置为 "never",禁止尾随逗号(旧 JavaScript 不支持)。
    • no-var:关闭,允许 var 声明。
    • prefer-numeric-literals:关闭,允许二进制/八进制/十六进制字面量。
    • prefer-object-spread:关闭,允许 Object.assign
    • strict:设置为 "safe",强制采用务实的严格模式方法。

来源: packages/eslint-config-airbnb-base/legacy.js1-34

环境配置

旧版配置设置了以下环境:

环境设置描述
browsertrue启用了浏览器全局变量
nodetrue启用了 Node.js 全局变量
amdfalse不假定 AMD 模块系统
mochafalse不包含 Mocha 测试框架全局变量
jasminefalse不包含 Jasmine 测试框架全局变量

来源: packages/eslint-config-airbnb-base/legacy.js9-15

Node.js 配置

Node.js 配置提供了特定于 Node.js 开发的规则。此配置包含在基本配置和旧版配置中。

关键 Node.js 规则

规则设置描述
global-requireerror要求所有 require() 调用都位于顶层
no-buffer-constructorerror禁止使用已弃用的 Buffer() 构造函数
no-new-requireerror防止将 newrequire() 一起使用
no-path-concaterror禁止与 __dirname__filename 进行字符串拼接

来源: packages/eslint-config-airbnb-base/rules/node.js1-43

React Hooks 配置

React Hooks 配置(在系统架构图中提及,但未在提供的文件中直接列出)扩展了主要的 Airbnb React 配置,增加了特定于 React Hooks 的规则。这些规则有助于确保 React Hooks API 的正确使用。

根据架构图,此配置可能:

  1. 强制执行 Hooks 规则(确保 Hooks 在顶层、仅在 React 函数中调用等)
  2. 对 useEffect 和类似 Hooks 强制执行详尽依赖项规则
  3. 可能包含 Hooks 使用的其他最佳实践

专用配置的使用

配置选择流程图

安装与使用

要在您的项目中为这些专用配置,请首先安装相应的包:

# For base configurations
npm install eslint-config-airbnb-base --save-dev

# For React configurations
npm install eslint-config-airbnb --save-dev

然后,在您的 .eslintrc 文件中,扩展所需的专用配置。

与主 ESLint 配置的集成

专用配置旨在无缝集成到 Airbnb ESLint 配置生态系统中。

专用配置允许团队:

  1. 渐进式采用 Airbnb 风格指南,从仅限空格规则开始。
  2. 支持旧代码库,而不强制使用 ES6+ 语法。
  3. 专注于 React Hooks,适用于使用 Hooks API 的组件。

这些配置是对 eslint-config-airbnb-baseeslint-config-airbnb 中讨论的主 ESLint 配置的补充,为各种项目需求提供了灵活性。