ESLint 兼容性实用程序介绍

您是否依赖于尚不适用于 ESLint v9 的插件?此软件包将有所帮助。

ESLint v9.0.0 的发布带来了 新配置系统 的推出,以及 规则 API 的一系列更改。这些更改是必要的,以便为 ESLint 实施 语言插件 做好准备,这将使 ESLint 能够原生 lint 除 JavaScript 之外的其他语言。因此,插件作者需要更新其规则以与 v9.0.0 配合使用,但不幸的是,这意味着您依赖的某些插件可能尚未更新。这就是我们发布兼容性实用程序的原因。

如何知道兼容性实用程序是否会有所帮助

如果您在运行 ESLint 时遇到以下任何错误,这些实用程序可能会有所帮助

TypeError: context.getScope is not a function
TypeError: context.getAncestors is not a function
TypeError: context.markVariableAsUsed is not a function
TypeError: context.getDeclaredVariables is not a function

这些错误意味着插件规则尚未更新到最新的 ESLint 规则 API。

使用兼容性实用程序

首先,使用 npm 或任何兼容 npm 的 CLI 安装 @eslint/compat

npm install @eslint/compat -D
# or
yarn add @eslint/compat -D
# or
pnpm install @eslint/compat -D
# or
bun install @eslint/compat -D

然后,在您的 eslint.config.js 文件中使用 fixupPluginRules() 函数将插件包装在兼容性层中

// eslint.config.js
import { fixupPluginRules } from "@eslint/compat";
import example from "eslint-plugin-example";

export default [
{
plugins: {
example: fixupPluginRules(example)
}
},

// other config
];

之后,插件应按预期工作。

修复导入的配置

如果您从另一个引用插件的包中导入平面样式配置,则可以使用 fixupConfigRules() 函数来包装找到的所有插件,如下所示

// eslint.config.js
import { fixupConfigRules } from "@eslint/compat";
import recommended from "eslint-plugin-example/configs/recommended.js";

export default [

...fixupConfigRules(recommended)

// other config
];

fixupConfigRules() 函数接受单个对象和对象数组,以便轻松更新您正在使用的任何配置。

FlatCompat 一起使用

如果您正在使用 @eslint/eslintrc 包中的 FlatCompat,您可能无法访问 eslintrc 样式配置中引用的每个插件。在这种情况下,您可以像本例中一样使用 fixupConfigRules() 函数来包装所有插件

// eslint.config.js
import { fixupConfigRules } from "@eslint/compat";
import { FlatCompat } from "@eslint/eslintrc";

const flatCompat = new FlatCompat();

export default [

...fixupConfigRules(
flatCompat.extends("my-config")
)

// other config
];

虽然此示例显示了如何将 fixupConfigRules()extends() 方法一起使用,但 FlatCompat 上的任何方法都有效。

结论

新配置系统的优势之一是,它使我们能够修补尚未由其维护者更新的插件和配置。我们知道迁移到 ESLint v9.0.0 并且您的配置无法工作可能会令人沮丧,这就是为什么我们致力于提供像 @eslint/eslintrc@eslint/compat 这样的包来帮助过渡。

最新的 ESLint 新闻、案例研究、教程和资源。

Evolving flat config with extends
5 分钟阅读

使用 extends 改进平面配置

您的 eslint.config.js 文件现在可以使用 extends 来简化您的配置。

ESLint v9.22.0 released
1 分钟阅读

ESLint v9.22.0 发布

我们刚刚推送了 ESLint v9.22.0,这是一个 ESLint 的次要版本升级。此版本添加了一些新功能并修复了之前版本中发现的几个错误。

ESLint v9.21.0 released
2 分钟阅读

ESLint v9.21.0 发布

我们刚刚推送了 ESLint v9.21.0,这是一个 ESLint 的次要版本升级。此版本添加了一些新功能并修复了之前版本中发现的几个错误。