本文档详细介绍了 Airbnb JavaScript 风格指南仓库提供的专用 ESLint 配置。这些配置是主 ESLint 配置的变体,用于解决特定用例,例如对旧代码的支持、以空格为重点的 linting 以及 React Hooks 规则。这些专用配置允许团队渐进式地采用 Airbnb 风格指南,或者在完全采用可能不合适的特定场景下使用。
有关主 ESLint 配置的信息,请参阅 eslint-config-airbnb-base 和 eslint-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.js 和 airbnb/whitespace.js)将非空格规则的严重级别从错误改为警告。这使得团队可以专注于修复空格和格式化问题,同时了解其他规则的违规情况,但不会被其阻止。
空格配置使用以下过程:
eslint-config-airbnb-base 或 eslint-config-airbnb 配置开始。此过程在 onlyErrorOnRules 函数中实现,该函数接收要保留为错误的规则列表和基本配置,并返回修改后的配置。
来源: packages/eslint-config-airbnb-base/whitespace.js25-47 packages/eslint-config-airbnb/whitespace.js25-47
空格配置的实现处理了不同的规则配置格式
| 规则格式 | 示例 | 转换 |
|---|---|---|
| 字符串 | 'error' | 'warn' |
| 数字 | 2 | 1 |
| 数组 | ['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 代码库提供了一套规则。此配置对于维护或逐步更新旧代码同时遵循良好实践非常有用。
旧版配置:
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
旧版配置设置了以下环境:
| 环境 | 设置 | 描述 |
|---|---|---|
| browser | true | 启用了浏览器全局变量 |
| node | true | 启用了 Node.js 全局变量 |
| amd | false | 不假定 AMD 模块系统 |
| mocha | false | 不包含 Mocha 测试框架全局变量 |
| jasmine | false | 不包含 Jasmine 测试框架全局变量 |
来源: packages/eslint-config-airbnb-base/legacy.js9-15
Node.js 配置提供了特定于 Node.js 开发的规则。此配置包含在基本配置和旧版配置中。
| 规则 | 设置 | 描述 |
|---|---|---|
| global-require | error | 要求所有 require() 调用都位于顶层 |
| no-buffer-constructor | error | 禁止使用已弃用的 Buffer() 构造函数 |
| no-new-require | error | 防止将 new 与 require() 一起使用 |
| no-path-concat | error | 禁止与 __dirname 和 __filename 进行字符串拼接 |
来源: packages/eslint-config-airbnb-base/rules/node.js1-43
React Hooks 配置(在系统架构图中提及,但未在提供的文件中直接列出)扩展了主要的 Airbnb React 配置,增加了特定于 React Hooks 的规则。这些规则有助于确保 React Hooks API 的正确使用。
根据架构图,此配置可能:
要在您的项目中为这些专用配置,请首先安装相应的包:
# For base configurations
npm install eslint-config-airbnb-base --save-dev
# For React configurations
npm install eslint-config-airbnb --save-dev
然后,在您的 .eslintrc 文件中,扩展所需的专用配置。
专用配置旨在无缝集成到 Airbnb ESLint 配置生态系统中。
专用配置允许团队:
这些配置是对 eslint-config-airbnb-base 和 eslint-config-airbnb 中讨论的主 ESLint 配置的补充,为各种项目需求提供了灵活性。