
我们听到了您的反馈:ESLint 用户尚未升级到 ESLint v9.x 的最大原因之一是迁移配置文件看起来困难且复杂。有些插件支持扁平配置和 ESLint v9.x 规则 API,而有些则不支持。有时您需要使用 FlatCompat
,有时您需要使用兼容性实用程序。尽管我们在迁移指南中尽可能多地涵盖了这些内容,但仔细检查您的配置并进行必要的更改可能需要时间。
因此,我们很高兴地宣布发布 ESLint 配置迁移器。此实用程序旨在将 .eslintrc.*
文件转换为 eslint.config.js
文件,包括
.eslintrc
、.eslintrc.json
、.eslintrc.yml
和.eslintrc.yaml
文件的 1 对 1 迁移。- 简单
.eslintrc.js
、.eslintrc.cjs
和.eslintrc.mjs
文件的合理迁移。(如果您使用变量来构建配置,这些文件通常需要编辑)。 - 自动将
.eslintignore
模式包含到您的新配置文件中。 - 必要时自动使用
FlatCompat
。 - 必要时自动使用兼容性实用程序。
重要提示: 此版本的实用程序仅处理最简单的 JavaScript 配置文件(.eslintrc.js
、.eslintrc.cjs
、.eslintrc.mjs
)。它的工作原理是评估文件,然后迁移计算出的配置。因此,它不会保留文件内部的任何逻辑。我们希望在未来的版本中添加此功能。
使用配置迁移器
您可以直接从 npm 使用配置迁移器,而无需通过 npx
或类似命令安装它。传递要转换的 .eslintrc.*
文件的位置,如下所示
npx @eslint/migrate-config .eslintrc.json
# or
yarn dlx @eslint/migrate-config .eslintrc.json
# or
pnpm dlx @eslint/migrate-config .eslintrc.json
# or
bunx @eslint/migrate-config .eslintrc.json
默认情况下,此命令将输出一个 eslint.config.mjs
文件。如果您想输出 CommonJS 文件,请添加 --commonjs
标志
npx @eslint/migrate-config .eslintrc.json --commonjs
# or
yarn dlx @eslint/migrate-config .eslintrc.json --commonjs
# or
pnpm dlx @eslint/migrate-config .eslintrc.json --commonjs
# or
bunx @eslint/migrate-config .eslintrc.json --commonjs
局限性
配置迁移器的目标是减少您首次使用时遇到错误的可能性,因此,它积极采用 FlatCompat
和兼容性实用程序。这意味着生成的配置文件可能不是最优的,您可能可以自行简化它。
生成配置文件后,您应该查看以下内容
- 是否有更新版本的插件? 可能有更新版本的插件本身完全支持 ESLint v9.x,并且不需要任何兼容性工作。始终最好升级到您使用的插件的最新版本。
- 您在其他目录中是否有
.eslintrc.*
配置文件? 新的配置系统不会合并来自父目录的配置文件。如果您使用.eslintrc.*
文件覆盖特定目录中的配置,则需要将该配置移动到您的主eslint.config.*
文件中。 - 您是否使用了
--ext
CLI 标志? 如果是这样,您需要在您的配置文件中 创建一个条目,以匹配您在命令行上传递的文件扩展名。
生成的配置文件可能在未经修改的情况下无法工作,但它应该能让您非常接近目标。
结论
当我们发布 ESLint v9.x 时,我们认为提供配置迁移指南将帮助大多数用户完成向新配置系统的过渡。不幸的是,我们没有预料到大家在此过程中会遇到的所有挑战。我们希望配置迁移器能使未来的过渡变得更加容易。由于人们配置 ESLint 的方式多种多样,因此不可能在迁移后使每个配置文件都 100% 工作,但我们认为此工具应该可以避免大多数繁琐的转换步骤,从而使您更快地启动并运行 ESLint v9.x。