
ESLint 配置文件完全指南从 flat config 基础到 TypeScript 配置加载【免费下载链接】eslintFind and fix problems in your JavaScript code.项目地址: https://gitcode.com/GitHub_Trending/es/eslint本文是 ESLint 配置文件flat config即eslint.config.*的权威实战指南。文章以 docs/src/use/configure/configuration-files.md 为核心骨架结合仓库内 lib/config/config-loader.js、lib/config/flat-config-array.js 等源码实现系统讲解配置文件的命名与放置、配置对象的所有属性、files/ignores/basePath的匹配规则、级联合并、extends扩展、全局忽略、linter 选项以及 TypeScript 配置文件的加载机制。读完本文你将能独立编写、调试并优化你自己的 ESLint 配置文件并理解其底层解析原理。配置文件概览你可以将 ESLint 项目配置放在一个配置文件中其中可以包含内置规则、规则的启用方式、带自定义规则的插件、可共享配置、规则应用的文件范围等信息。flat config 模式下配置文件可以命名为以下几种之一eslint.config.jseslint.config.mjseslint.config.cjseslint.config.ts需要额外配置eslint.config.mts需要额外配置eslint.config.cts需要额外配置配置文件应放置在项目根目录并导出一个由配置对象组成的数组。以下是一个最简单的示例// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { rules: { semi: error, prefer-const: error, }, }, ]);在这个示例中使用defineConfig()辅助函数定义了一个只含单个配置对象的配置数组。该配置对象启用了semi与prefer-const两条规则它们会应用到 ESLint 使用此配置文件处理的所有文件上。defineConfig、globalIgnores、includeIgnoreFile这些辅助函数都来自eslint/config-helpers包并在仓库的 lib/config-api.js 中被统一导出即eslint/config入口。如果你的项目在package.json中声明了type: commonjs那么eslint.config.js必须使用 CommonJS 格式// eslint.config.js const { defineConfig } require(eslint/config); module.exports defineConfig([ { rules: { semi: error, prefer-const: error, }, }, ]);配置对象每个配置对象包含 ESLint 在一组文件上执行所需的全部信息。配置对象的属性如下属性类型说明name字符串配置对象的名称用于错误消息和 config inspector 中标识是哪个配置对象在生效见命名约定basePath字符串指定该配置对象应应用于的子目录路径可以是相对路径或绝对路径filesglob 模式数组指明该配置对象应应用于哪些文件未指定时应用于其他任意配置对象匹配的所有文件ignoresglob 模式数组指明该配置对象不应应用于哪些文件未指定时应用于files匹配的所有文件。若ignores单独使用无其他键则其模式视为全局忽略并作用于每个配置对象extends数组由字符串、配置对象或配置数组组成用于应用额外配置language字符串指定 lint 所使用的语言格式为pluginName/languageName例如markdown/commonmarkJavaScript 默认为js/jslanguageOptions对象与指定语言的 lint 配置方式相关的设置。对于 JavaScript包含以下设置linterOptions对象与 lint 过程相关的设置详见配置 Linter 选项processor对象或字符串包含preprocess()和postprocess()方法的对象或插件内处理器的名称字符串如pluginName/processorNameplugins对象插件名到插件对象的映射。指定files时插件仅对匹配的文件可用rules对象已配置的规则。指定files或ignores时规则配置仅对匹配的文件生效settings对象应提供给所有规则的键值对信息其中JavaScript 的languageOptions具体包含ecmaVersion— 要支持的 ECMAScript 版本可以是年份如2022或版本号如5设为latest表示使用最近支持的版本默认latest。sourceType— JavaScript 源码类型script传统脚本、moduleESM 模块、commonjsCommonJS 文件。默认值.js与.mjs文件为module.cjs文件为commonjs。globals— 指定在 lint 期间应添加到全局作用域的对象。parser— 包含parse()或parseForESLint()方法的对象默认espree。parserOptions— 直接传递给解析器parse()或parseForESLint()方法的附加选项对象可用选项取决于解析器。指定 files 与 ignores[!TIP]files和ignores中的模式使用minimatch语法并相对于eslint.config.js文件所在位置进行求值。如果通过--config命令行选项使用替代配置文件则所有模式都相对于当前工作目录求值。当配置对象带有相对路径的basePath属性时其指定的子目录相对于eslint.config.js的位置或使用--config时的当前工作目录求值在带basePath的配置对象中files和ignores中的模式相对于basePath代表的子目录求值。可以组合使用files与ignores来决定配置对象应用的文件范围// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ // 匹配所有以 .js 结尾的文件 { files: [**/*.js], rules: { semi: error, }, }, // 匹配所有以 .js 结尾的文件但排除 __tests 目录 { files: [**/*.js], ignores: [__tests/**], rules: { no-console: error, }, }, ]);不包含files或ignores的配置对象会自动应用于被其他任意配置对象匹配到的文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ // 由于没有指定 files 或 ignores 键匹配所有文件 { rules: { semi: error, }, }, ]);使用此配置semi规则会对所有匹配 ESLint 默认文件模式的文件生效。传入example.js时semi会被应用传入example.txt这类非 JavaScript 文件时则不会因为没有任何其他配置对象匹配该文件名ESLint 会输出错误消息提示该文件因缺少配置而被忽略。[!IMPORTANT] 默认情况下ESLint 会 lint 匹配**/*.js、**/*.cjs、**/*.mjs模式的文件。除非使用全局忽略显式排除否则这些文件始终会被匹配。如果你的配置对象包含其他模式没有files键的配置对象中的规则也会应用到这些模式。 因此当 ESLint 也用于非 JS 文件时更合理的做法是创建一个包含files: [**/*.js, **/*.cjs, **/*.mjs]的配置对象并将相关规则放在其中。指定任意扩展名的文件要 lint 默认.js、.cjs、.mjs之外扩展名的文件可在files中使用**/*.extension格式的模式。任何模式都可以除非它是*或者以/*或/**结尾。例如要 lint.ts、.cts、.mts扩展名的 TypeScript 文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.ts, **/*.cts, **/*.mts], }, // ...other config ]);指定无扩展名的文件无扩展名的文件可以用!(*.*)模式匹配// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/!(*.*)], }, // ...other config ]);以上配置会在所有目录中 lint 除默认.js、.cjs、.mjs外无扩展名的文件。[!TIP] 以点开头的文件名如.gitignore被视为只有扩展名而没有基本名。以.gitignore为例其扩展名是gitignore因此该文件匹配**/.gitignore模式而不匹配**/*.gitignore。使用 AND 操作指定文件通过在files数组内部使用字符串数组可以让多个模式同时匹配同一个文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [[src/*, **/*.js]], }, // ...other config ]);[src/*, **/*.js]模式要求文件同时位于src目录内且以.js结尾。当你动态计算files数组的值并希望避免把多个 glob 模式拼接成单个字符串可能带来的错误时这种方法很有用。使用 ignores 排除文件通过组合files与ignores模式可以限制配置对象的应用范围。例如只让某些规则应用于src目录中的文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [src/**/*.js], rules: { semi: error, }, }, ]);这里只有src目录中的 JavaScript 文件应用semi规则。对其它目录中的文件运行 ESLint 时此配置对象会被跳过。添加ignores还可以把src中的部分文件移出该配置对象的作用范围// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [src/**/*.js], ignores: [**/*.config.js], rules: { semi: error, }, }, ]);此配置对象匹配src目录中除.config.js结尾之外的所有 JavaScript 文件。也可以在ignores中使用否定模式来排除某些文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [src/**/*.js], ignores: [**/*.config.js, !**/eslint.config.js], rules: { semi: error, }, }, ]);此时配置对象排除了以.config.js结尾的文件但eslint.config.js例外——它仍然应用semi规则。需要注意非全局的ignores模式只能匹配文件名。dir-to-exclude/这样的模式不会忽略任何内容要忽略某目录下的所有内容应使用dir-to-exclude/**模式。如果ignores与其它键如rules一起使用而没有files则该配置对象应用于所有被 lint 的文件但排除被ignores排除的文件// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { ignores: [**/*.config.js], rules: { semi: error, }, }, ]);此配置对象应用于所有 JavaScript 文件但排除以.config.js结尾的文件。效果上等同于把files设为**/*。一般来说指定ignores时最好总是带上files。另外未指定files时否定的ignores模式不会自动让任何匹配文件被 lint。ESLint 只会 lint 默认匹配的文件或被不是*且不以/*或/**结尾的files模式匹配的文件。[!TIP] 使用 config inspectorCLI 中的--inspect-config选项可以测试哪个配置对象应用到了特定文件上。使用 ignores 全局忽略文件根据ignores属性的使用方式它可以表现为非全局 ignores 或全局 ignores当ignores在配置对象中单独使用除了name外没有其它键时模式作为全局忽略。这意味着它们作用于每个配置对象而不只是定义它的那个从而避免在多个配置对象中复制并同步维护ignores属性。如果ignores与同一配置对象中的其它属性一起使用则模式作为非全局忽略只作用于定义它的配置对象。全局忽略与非全局忽略还有一些使用差异非全局ignores中的模式只匹配文件dir/filename.js或目录内的文件dir/**全局ignores中的模式除了支持非全局忽略的模式外还可以匹配目录本身dir/。对于所有ignores的使用你定义的模式会追加到 ESLint 默认模式之后默认模式是[**/node_modules/, .git/]这些模式总是匹配以点开头的文件和目录如.foo.js或.fixtures除非这些文件被显式忽略。默认唯一被忽略的点目录是.git。// eslint.config.js import { defineConfig } from eslint/config; // 全局忽略示例 export default defineConfig([ { ignores: [.config/, dist/, tsconfig.json] // 因缺少其它属性而作为全局忽略 }, { ... }, // ... 其它配置对象继承全局忽略 { ... }, // ... 其它配置对象继承全局忽略 ]); // 非全局忽略示例 export default defineConfig([ { ignores: [.config/**, dir1/script1.js], rules: { ... } // 此属性的存在决定了非全局忽略 }, { ignores: [other-dir/**, dist/script2.js], rules: { ... } // 此属性的存在决定了非全局忽略 }, ]);为避免混淆建议使用globalIgnores()辅助函数来明确表示哪些 ignores 是全局的。以上全局忽略示例改写为globalIgnores()形式// eslint.config.js import { defineConfig, globalIgnores } from eslint/config; // 全局忽略示例 export default defineConfig([ globalIgnores([.config/, dist/, tsconfig.json]), { ... }, // ... 其它配置对象继承全局忽略 { ... }, // ... 其它配置对象继承全局忽略 ]); // 非全局忽略示例 export default defineConfig([ { ignores: [.config/**, dir1/script1.js], rules: { ... } // 此属性的存在决定了非全局忽略 }, { ignores: [other-dir/**, dist/script2.js], rules: { ... } // 此属性的存在决定了非全局忽略 }, ]);关于ignores规则配置的更多信息与示例参见 Ignore Files。从实现上看全局忽略的语义由 lib/config/flat-config-array.js 中基于eslint/config-array的FlatConfigArray类承载配置数组在normalize()阶段见 lib/config/config-loader.js 的calculateConfigArray方法会对所有配置对象做规范化合并从而保证全局 ignores 对每个配置对象生效。指定 basePath你可以选择指定basePath来让配置对象应用于特定子目录包括其子目录// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ // 匹配 tests 及其子目录中的所有文件 { basePath: tests, rules: { no-undef: error, }, }, // 匹配 tests 及其子目录中以 spec.js 结尾的所有文件 { basePath: tests, files: [**/*.spec.js], languageOptions: { globals: { it: readonly, describe: readonly, }, }, }, // 全局忽略 tests/fixtures 目录 { basePath: tests, ignores: [fixtures/], }, ]);结合extends只需指定一次basePath即可让多个配置对象作用于同一子目录// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { basePath: tests, extends: [ // 匹配 tests 及其子目录中的所有文件 { rules: { no-undef: error, }, }, // 匹配 tests 及其子目录中以 spec.js 结尾的所有文件 { files: [**/*.spec.js], languageOptions: { globals: { it: readonly, describe: readonly, }, }, }, // 全局忽略 tests/fixtures 目录 { ignores: [fixtures/], }, ], }, ]);级联配置对象当多个配置对象匹配同一文件名时配置对象会被合并冲突时靠后的对象覆盖靠前的对象。例如// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], languageOptions: { globals: { MY_CUSTOM_GLOBAL: readonly, }, }, }, { files: [tests/**/*.js], languageOptions: { globals: { it: readonly, describe: readonly, }, }, }, ]);使用此配置所有 JavaScript 文件都定义了自定义全局对象MY_CUSTOM_GLOBAL而tests目录中的 JavaScript 文件除了MY_CUSTOM_GLOBAL外还额外定义了it和describe。对于tests目录中的任何 JavaScript 文件两个配置对象都会被应用languageOptions.globals被合并成最终结果。这种后对象覆盖先对象的合并顺序正是 lib/config/flat-config-array.js 中FlatConfigArray对配置数组按序规范化后的结果。配置 Linter 选项与 lint 过程本身相关的选项通过linterOptions对象配置。它们影响 lint 如何进行但不会影响源码文件如何被解释。禁用行内配置行内配置通过/*eslint*/注释实现例如/*eslint semi: error*/。可以通过将noInlineConfig设为true来禁止行内配置启用后所有行内配置都会被忽略// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], linterOptions: { noInlineConfig: true, }, }, ]);报告未使用的禁用指令/*eslint-disable*/、/*eslint-enable*/、/*eslint-disable-next-line*/等禁用/启用指令用于在代码片段周围禁用 ESLint 规则。随着代码变化这些指令可能不再需要因为代码改变后规则不再被触发。通过将reportUnusedDisableDirectives设为严重级别字符串可以启用对未使用禁用指令的报告// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], linterOptions: { reportUnusedDisableDirectives: error, }, }, ]);此设置默认为warn。可以通过命令行选项--report-unused-disable-directives或--report-unused-disable-directives-severity覆盖此设置。为兼容旧版本true等价于warnfalse等价于off。在 lib/linter/linter.js 中可以看到该选项的归一化逻辑布尔值true/false会被转换成warn/off最终传入指令处理模块 lib/linter/apply-disable-directives.js 生成针对未使用指令的报告。报告未使用的行内配置/* eslint rule-name: error */这类行内配置注释用于在代码片段周围改变 ESLint 规则的严重级别和/或选项。随着项目 ESLint 配置文件的变化这些指令可能不再与已配置的内容有差异。通过将reportUnusedInlineConfigs设为严重级别字符串可以启用对未使用行内配置注释的报告// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], linterOptions: { reportUnusedInlineConfigs: error, }, }, ]);可以通过命令行选项--report-unused-inline-configs覆盖此设置。配置规则你可以通过在配置对象中添加rules属性一个包含规则配置的对象来配置任意数量的规则。对象中的键是规则名值是每条规则的配置// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { rules: { semi: error, }, }, ]);此配置对象指定启用semi规则严重级别为error。也可以给规则提供选项使用数组第一项是严重级别其后每项都是该规则的选项。例如通过传never选项让semi规则禁止分号// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { rules: { semi: [error, never], }, }, ]);每条规则都有自己特定的选项且可以是任意合法 JSON 数据类型。请查阅要配置的规则的文档以了解可用选项。关于规则配置的更多信息参见 Configure Rules。配置共享设置ESLint 支持在配置文件中添加共享设置。当你向配置对象添加settings对象时它会提供给每一条规则。按惯例插件会对它们关心的设置做命名空间隔离以避免冲突。插件可以用settings来指定应在其所有规则间共享的信息如果你在添加自定义规则并希望它们访问相同信息时这会很有用// eslint.config.js import { defineConfig } from eslint/config; export default defineConfig([ { settings: { sharedData: Hello, }, plugins: { customPlugin: { rules: { my-rule: { meta: { // custom rules meta information }, create(context) { const sharedData context.settings.sharedData; return { // code }; }, }, }, }, }, rules: { customPlugin/my-rule: error, }, }, ]);扩展配置配置对象通过extends继承另一个配置对象或数组的所有特性包括规则、插件和语言选项并可进一步修改所有选项。extends键是一个数组指示要扩展哪些配置。extends数组的元素可以是以下三种值之一指定插件中某配置名称的字符串一个配置对象一个配置数组。使用插件中的配置ESLint 插件可以导出预定义配置。这些配置通过字符串引用遵循pluginName/configName模式。插件必须先指定在plugins键中// eslint.config.js import examplePlugin from eslint-plugin-example; import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], plugins: { example: examplePlugin, }, extends: [example/recommended], }, ]);在此示例中加载了eslint-plugin-example中名为recommended的配置。插件配置也可以在配置数组内部按名称引用。也可以把插件配置直接插入extends数组// eslint.config.js import pluginExample from eslint-plugin-example; import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], plugins: { example: pluginExample, }, extends: [pluginExample.configs.recommended], }, ]);这种情况下通过插件对象的configs属性直接访问名为recommended的配置。[!IMPORTANT] 使用extends键时建议始终同时使用files键以确保配置应用到正确的文件。省略files键可能导致被扩展的配置最终应用到所有文件。使用预定义配置ESLint 为 JavaScript 提供了两个预定义配置js/recommended— 启用 ESLint 推荐所有人使用的规则以避免潜在错误。js/all— 启用 ESLint 自带的所有规则。此配置不建议在生产中使用因为它会随 ESLint 的每个 minor 和 major 版本变化。请自行承担使用风险。要使用这些预定义配置请安装eslint/js包然后在后续配置对象中修改其它属性// eslint.config.js import js from eslint/js; import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], plugins: { js, }, extends: [js/recommended], rules: { no-unused-vars: warn, }, }, ]);这里先应用了js/recommended预定义配置随后另一个配置对象添加了no-unused-vars的期望配置。关于如何将预定义配置与你自己的偏好组合参见 Combine Configs。使用可共享配置包可共享配置是一个导出配置对象或数组的 npm 包。该包应作为依赖安装到项目中然后在eslint.config.js中引用。例如使用名为eslint-config-example的可共享配置// eslint.config.js import exampleConfig from eslint-config-example; import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.js], extends: [exampleConfig], rules: { no-unused-vars: warn, }, }, ]);在此示例中exampleConfig可以是对象或数组无论哪种都可以直接插入extends数组。关于如何组合可共享配置与你自己的偏好参见 Combine Configs。Extends 与级联的选择时机何时使用extends复用配置— 想要继承并基于插件、可共享包或预定义配置构建时插件配置— 应用 ESLint 插件的 recommended 或特定配置时如example/recommended可共享配置— 使用导出配置对象的 npm 包时如eslint-config-example预定义配置— 使用js/recommended或js/all等 ESLint 内置配置时模块化配置— 想把多个配置来源组合进单个配置对象时保持一致性— 想在多个配置对象间保证一致的基础规则时插件集成— 需要应用插件自带的配置时。何时使用级联Cascading文件特定规则— 不同文件模式或目录需要不同规则时渐进式配置— 想对所有文件应用基础规则再为特定子集添加/覆盖规则时环境特定设置— 测试文件、源文件、配置文件需要不同规则集时基于目录的配置— 项目不同目录需要不同 lint 方式时规则严重级别调整— 想对特定文件模式改变规则严重级别error/warn/off时语言选项差异— 不同文件需要不同的 ECMAScript 版本或解析器选项时。配置命名约定name属性是可选的但建议为每个配置对象命名尤其是创建共享配置时。名称用于错误消息和 config inspector 中帮助识别正在使用哪个配置对象。名称应能描述配置对象的用途并使用配置名或插件名加/分隔符来限定作用域。ESLint 运行时不会强制名称唯一但建议设置唯一名称以避免混淆。例如为名为eslint-plugin-example的插件创建配置对象时可以给配置对象加example/前缀export default { configs: { recommended: { name: example/recommended, rules: { no-unused-vars: warn, }, }, strict: { name: example/strict, rules: { no-unused-vars: error, }, }, }, };暴露配置对象数组时name可以带有额外的限定层级以帮助识别配置对象export default { configs: { strict: [ { name: example/strict/language-setup, languageOptions: { ecmaVersion: 2024, }, }, { name: example/strict/sub-config, files: [src/**/*.js], rules: { no-unused-vars: error, }, }, ], }, };配置文件的解析过程在命令行运行 ESLint 时它首先在目标文件所在目录中查找配置文件然后向上级祖先目录搜索直到找到eslint.config.*文件。这一行为提升了对 monorepo 的支持——子目录可以拥有自己的配置文件。这正是 lib/config/config-loader.js 中ConfigLoader.locateConfigFileToUse()方法的逻辑它使用find-up从起始目录向上搜索FLAT_CONFIG_FILENAMES中列出的六个候选文件名一旦找到便以配置文件所在目录作为basePath。可以使用-c或--config选项指定替代配置文件来阻止这种搜索npx eslint --config some-other-file.js **/*.js在这种情况下ESLint 不再搜索配置文件而是直接使用some-other-file.js。从 lib/config/config-loader.js 的实现看--config指定的路径会被path.resolve(cwd, useConfigFile)解析且basePath回退为当前工作目录——这也是文档中使用--config时所有模式都相对于当前工作目录求值的来源。TypeScript 配置文件对于 Deno 和 BunTypeScript 配置文件原生受支持对于 Node.js必须在项目中安装可选开发依赖jiti2.2.0 或更高版本ESLint 不会自动安装npm install jiti --save-dev然后你就可以创建.ts、.mts或.cts扩展名的配置文件并导出一个配置对象数组。[!IMPORTANT] ESLint 不会对配置文件执行类型检查也不会应用tsconfig.json中的任何设置。从源码看lib/config/config-loader.js 的loadTypeScriptConfigFileWithJiti()方法会显式校验jiti的版本major 小于 2、或 major 为 2 且 minor 小于 2 时直接抛错提示升级同时以moduleCache: false创建jiti实例使配置文件的修改时间变化后能重新加载。原生 TypeScript 支持如果你使用的是Node.js 22.13.0可以原生加载 TypeScript 配置文件无需jiti。这得益于 Node.js 的--experimental-strip-types标志。由于该特性仍处于实验阶段你还必须启用unstable_native_nodejs_ts_config标志npx --node-options--experimental-strip-types eslint --flag unstable_native_nodejs_ts_config在 lib/shared/flags.js 中unstable_native_nodejs_ts_config被登记为官方支持的 flag。加载配置时lib/config/config-loader.js 会通过isNativeTypeScriptSupportEnabled()检查process.features.typescript是否为strip或transform确认 Node.js 原生 TS 支持确实开启后才走dynamicImportConfig()原生导入路径否则会分别抛出flag 不支持旧版 Node或需要传入--experimental-strip-types的明确错误。配置文件优先级如果存在多个 ESLint 配置文件ESLint 优先使用 JavaScript 文件而非 TypeScript 文件。优先级顺序如下eslint.config.jseslint.config.mjseslint.config.cjseslint.config.tseslint.config.mtseslint.config.cts要覆盖此行为使用--config或-c命令行选项指定不同的配置文件npx eslint --config eslint.config.ts这一优先级顺序同样在 lib/config/config-loader.js 的FLAT_CONFIG_FILENAMES数组中体现——find-up会按数组顺序依次查找先命中的 JS 文件自然优先于 TS 文件。调试你的配置文件ESLint 提供--inspect-config选项运行npx eslint/config-inspectorlatest启动 config inspector见 docs/src/use/command-line-interface.md#--inspect-config。使用 config inspector 可以更好地理解你的配置做了什么、应用到了哪些文件使用该标志时CLI 不会执行 lintnpx eslint --inspect-config结合本文的全局忽略、basePath、级联合并与extends等概念config inspector 是排查某个规则为什么没有应用到某文件的首选工具。相关文档Configure Rules — 规则配置的详细说明Ignore Files —ignores模式的高级用法Combine Configs — 组合预定义与可共享配置的模式Languages — 非 JavaScript 语言的配置本仓库自身就是一个大型 flat config 实践案例其 eslint.config.js 中综合运用了defineConfig、globalIgnores、includeIgnoreFile、basePath、级联配置等本文所述的全部机制。【免费下载链接】eslintFind and fix problems in your JavaScript code.项目地址: https://gitcode.com/GitHub_Trending/es/eslint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考