ESLint v9.0.0 发布

我们刚刚发布了 ESLint v9.0.0,这是 ESLint 的一个重大版本升级。此版本增加了一些新功能,并修复了先前版本中发现的几个错误。此版本也包含一些重大更改,因此请仔细阅读以下内容。

亮点

🌐 Highlights

这是从 ESLint v8.x 升级到 ESLint v9.0.0 时,你需要了解的重要更改(包括重大更改和非重大更改)的总结。

🌐 This is a summary of the significant changes, both breaking and non-breaking, you need to know about when upgrading from ESLint v8.x to ESLint v9.0.0.

正在安装

🌐 Installing

因为这是一个重大版本发布,你可能不会被 npm 自动升级。为了确保你使用的是此版本,请运行:

🌐 Because this is a major release, you may not automatically be upgraded by npm. To ensure you are using this version, run:

npm i eslint@9.0.0 --save-dev

迁移指南

🌐 Migration Guide

由于有很多变化,我们创建了一个 迁移指南,详细描述了重大更改以及你应该采取的应对步骤。我们预计大多数用户应该能够在不更改构建的情况下升级,但如果遇到问题,迁移指南应该是一个有用的资源。

🌐 As there are a lot of changes, we’ve created a migration guide describing the breaking changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.

不再支持 Node.js < v18.18.0 和 v19

🌐 Node.js < v18.18.0, v19 no longer supported

截至本帖发布,Node.js v20.x 是长期支持版本,因此我们将停止支持 所有 v18.18.0 之前的 Node.js 版本以及 v19.x。

🌐 As of this post, Node.js v20.x is the LTS release, and as such we are dropping support for all versions of Node.js prior to v18.18.0 as well as v19.x.

平面配置现在是默认配置,并且有一些变化

🌐 Flat config is now the default and has some changes

Flat 配置现在是 ESLint 的默认配置格式,eslintrc 已被正式弃用。要继续使用 eslintrc 配置文件,你需要将 ESLINT_USE_FLAT_CONFIG 环境变量设置为 false

🌐 Flat config is now the default configuration format for ESLint and eslintrc is officially deprecated. To continue using a eslintrc configuration file, you’ll need to set the ESLINT_USE_FLAT_CONFIG environment variable to false.

这一变化影响了用户、插件开发者和集成者,因为为了实现这一点,ESLint 的许多方面都必须进行更改。更多详情请参见我们之前的博客文章

🌐 This change affects users, plugin developers, and integrators as many aspects of ESLint had to change to make this happen. Please see our previous blog post for more details.

此版本还引入了 配置检查器,可以在命令行上使用 --inspect-config 启动。

🌐 This release also introduces the config inspector, which can be launched on the command line using --inspect-config.

移除了除 stylishhtmljsonjson-with-meta 外的所有格式化器

🌐 Removed all formatters except stylish, html, json, and json-with-meta

以下格式化工具已被移除:

🌐 The following formatters have been removed:

  • checkstyle
  • compact
  • jslint-xml
  • junit
  • tap
  • unix
  • visualstudio

如果你当前正在使用这些格式化工具,则需要安装 独立包 以用于 ESLint v9.0.0。

🌐 If you are using these formatters currently, you’ll need to install the standalone packages for use with ESLint v9.0.0.

已移除 valid-jsdocrequire-jsdoc 规则

🌐 Removed valid-jsdoc and require-jsdoc rules

我们已移除 valid-jsdocrequire-jsdoc。我们建议改用 eslint-plugin-jsdoc 插件。

🌐 We have removed valid-jsdoc and require-jsdoc. We recommend using the eslint-plugin-jsdoc plugin instead.

移除了 contextSourceCode 上的不推荐使用的方法

🌐 Removed deprecated methods on context and SourceCode

正如我们在九月宣布的那样,我们已经从 context 中移除了许多已弃用的方法,并用 SourceCode 上的方法进行了替代。

🌐 As we announced in September, we have removed a lot of deprecated methods from context and replaced them with methods on SourceCode.

已更新 eslint:recommended

🌐 Updated eslint:recommended

eslint:recommended 配置已更新,以包括我们认为重要的新规则,并删除已弃用和不那么重要的规则。

🌐 The eslint:recommended configuration is updated to include new rules that we feel are important, and to remove deprecated and less important rules.

新规则:no-useless-assignment

🌐 New rule: no-useless-assignment

ESLint v9.0.0 引入了一条新规则 no-useless-assignment,旨在发现你给变量赋值但该值从未被使用的情况。例如:

🌐 ESLint v9.0.0 introduces a new rule, no-useless-assignment, that is designed to catch situations where you’ve assigned a value to a variable and that value is never used. For example:

let id = 1234;      // 1234 is never used
id = calculateId();

对现有规则的更新

🌐 Updates to existing rules

  • 现在,complexity 规则还会考虑解构模式和参数中的可选链和默认值。
  • [no-fallthrough](/docs/latest/rules/no-fallthrough) 规则有一个新的选项 reportUnusedFallthroughComment
  • no-inner-declarations 规则有了新的默认行为。在 v8.x 中,该规则会将块内定义的任何函数标记为错误,因为这种行为在早期版本的 JavaScript 中是未定义的。从 ES 2015 开始,块级作用域的函数声明是明确定义的,因此我们将默认行为更改为不对块级作用域的函数发出警告。
  • no-misleading-character-class 规则现在会高亮正则表达式中有问题的字符,而不是整个正则表达式。
  • no-restricted-imports 规则改变了 paths 的行为。在 v8.x 中,如果你为 no-restricted-imports 规则的配置中 paths 数组有多个条目具有相同的 name 属性,只有最后一个会生效。在 v9.0.0 中,所有条目都会生效,从而可以为不同的导入名称指定不同的错误信息。
  • no-restricted-imports 规则有新的选项 allowImportNamesallowImportNamePattern
  • no-unused-vars 规则 varsIgnorePattern 选项不再适用于已捕获的错误变量。
  • no-unused-vars 规则的 caughtErrors 选项有了新的默认值(已从 "none" 更改为 "all")。
  • [no-unused-vars](/docs/latest/rules/no-unused-vars) 规则有一个新的选项 ignoreClassWithStaticInitBlock
  • [no-unused-vars](/docs/latest/rules/no-unused-vars) 规则有一个新的选项 reportUsedIgnorePattern
  • no-useless-computed-key 规则的 enforceForClassMembers 选项有了新的默认值(从 false 改为 true)。此更改旨在帮助避免由于重构而可能出现的误导性注释。当此选项设置为 true 时,如果某个 case 永远不会穿透,则规则将禁止出现穿透注释。

新 API loadESLint()

🌐 New API loadESLint()

ESLint 现在从其主入口点导出一个新的函数 loadESLint()。集成可以使用此函数获取 ESLint 类(原来的 FlatESLint 类)或 LegacyESLint 类(原来的 ESLint 类),从而轻松在 flat 配置和 eslintrc API 之间切换。

🌐 ESLint now exports a new function loadESLint() from its main entry point. Integrations can use this function to get either the ESLint class (former FlatESLint class) or the LegacyESLint class (former ESLint class) and thus easily swap between flat config and eslintrc APIs.

规则书写方式的更改

🌐 Changes to how you write rules

我们进行了多项更改以帮助防止规则错误:

🌐 We’ve made multiple changes to help prevent errors in rules:

  1. 函数风格的规则将在 v9.0.0 中停止工作。函数风格的规则是通过从文件中导出一个函数而不是导出带有 create() 方法的对象来创建的规则。
  2. 当规则没有指定 meta.schema 时,将应用默认架构 []。这意味着没有架构的规则将被假定为没有选项,这反过来意味着如果提供了选项,验证将失败。

更严格的 RuleTester 验证

🌐 Stricter RuleTester validations

此版本在 RuleTester 中增加了更多检查:

🌐 This release adds more checks in RuleTester:

  • 消息不能有未替换的占位符。
  • 建议必须更改代码。
  • 针对同一个 lint 问题的建议信息必须是唯一的。
  • 建议必须生成有效的语法。
  • 测试用例 output 必须不同于 code
  • 测试错误对象必须指定 messagemessageId
  • 如果实际错误提供了建议,则测试错误对象必须指定 suggestions
  • 测试建议对象必须指定 descmessageId
  • 测试建议对象必须指定 output
  • filenameonly 测试对象的属性必须是预期的类型(分别为 stringboolean)。
  • 重复测试会导致错误。

--output-file 标志现在保证文件会被输出

🌐 The --output-file flag now guarantees a file is output

--output-file CLI 标志旨在将 ESLint 运行的结果输出到指定文件。在此版本之前,如果 lint 检查通过且没有错误或警告,将不会输出任何文件。在 v9.0.0 中,当 lint 检查通过且没有任何错误或警告时,将输出一个空文件。

🌐 The --output-file CLI flag is designed to output the results of the ESLint run to specified file. Prior to this release, no file would be output if linting passed with no errors or warnings. In v9.0.0, an empty file will be output when linting passes without any errors or warnings.

更好的范围分析

🌐 Better scope analysis

在 v9.0.0 中,我们更新了 eslint-scope 的行为以修复几个长期存在的漏洞:

🌐 In v9.0.0, we updated the behavior of eslint-scope to fix a couple of longstanding bugs:

  1. 之前,ESLint 会将 ("use strict") 视为严格模式指令,即使它不是。我们修复了该行为,现在只有有效的严格模式指令才会被认可。
  2. extends 条款的包含作用域被错误地设置为包含该类的作用域,而它本应是类本身的作用域。这已经被修复。

CodePath#currentSegments 已移除

🌐 CodePath#currentSegments removed

如我们在上一篇帖子中宣布的那样,CodePath#currentSegments 已从规则 API 中移除。更多详情请参阅该帖子。

🌐 As announced in our previous post, CodePath#currentSegments has been removed from the rules API. Please refer to the post for more details.

预计算代码路径

🌐 Precalculated Code Paths

ESLint v9.0.0 现在在规则使用的遍历之前预先计算代码路径信息。因此,无论在规则的何处访问,代码路径信息现在都是完整的。

🌐 ESLint v9.0.0 now precalculates code path information before the traversal used by rules. As a result, the code path information is now complete regardless of where it is accessed inside of a rule.

对于同一规则的多个 /* eslint */ 注释现在不被允许

🌐 Multiple /* eslint */ comments for the same rule are now disallowed

在 ESLint v8.x 中,如果被 lint 的文件包含针对同一规则的多个 /* eslint */ 配置注释,将会应用最后一个注释,而其他注释将被默默忽略。

🌐 In ESLint v8.x, if the file being linted contained multiple /* eslint */ configuration comments for the same rule, the last one would be applied, while the others would be silently ignored.

在 ESLint v9.0.0 中,第一个会被应用,而其他的会被报告为 lint 错误。

🌐 In ESLint v9.0.0, the first one is applied, while the others are reported as lint errors.

--quiet 选项性能更好

🌐 --quiet option is more performant

--quiet 选项会在 ESLint 控制台中隐藏所有警告。在 v9.0.0 中,我们通过不执行任何设置为 "warn" 的规则来进行性能改进。

🌐 The --quiet option hides all warnings in the ESLint console. In v9.0.0, we are making a performance improvement by also not executing any rules set to "warn".

运行 eslint 时没有文件参数

🌐 Running eslint with no file arguments

如果你使用扁平配置并且没有向 CLI 传递任何文件参数,CLI 将默认对当前目录进行 lint,这意味着你可以输入 npx eslint 并且它将直接工作。(使用 eslintrc 配置文件执行相同操作会导致错误。)

🌐 If you are using flat config and you don’t pass any file arguments to the CLI, the CLI will default to linting the current directory, which means you can type npx eslint and it will just work. (Doing the same with an eslintrc config file will result in an error.)

未使用的禁用指令默认会引发警告

🌐 Unused disable directives cause warnings by default

ESLint 长期以来就能够标记未使用的禁用指令。在此版本中,我们默认启用了对未使用禁用指令的警告。你可以在配置文件中使用 linterOptions.reportUnusedDisableDirectives 修改此值,或在命令行使用 --report-unused-disable-directives-severity 修改此值。

🌐 ESLint has long been able to flag unused disable directives. In this release, we’ve enabled warnings for unused disable directives by default. You can modify this value in your config file with linterOptions.reportUnusedDisableDirectives or on the command line using --report-unused-disable-directives-severity.

通过 --stats 提供的格式化程序中可用的性能统计信息

🌐 Performance statistics available in formatters via --stats

当在 CLI 中使用 --stats 标志 时,来自 rule profiler 的信息现在可以在格式化程序中使用。这使得任何人都可以创建 ESLint 跟踪的性能信息的自定义可视化。

🌐 The information from the rule profiler is now available inside of formatters when the --stats flag is used in the CLI. This allows anyone to create custom visualizations of the performance information that ESLint tracks.

重大更改

🌐 Breaking Changes

  • b7cf3bd 修复!: 修复 allow 选项的 camelcase 规则模式 (#18232) (eMerzh)
  • 09bd7fe 重大更新!: 将 AST 遍历移入 SourceCode (#18167) (Nicholas C. Zakas)
  • 79a95eb feat!: 禁止对同一规则使用多个配置注释 (#18157) (Milos Djermanovic)
  • 9163646 增强功能!:规则测试器检查消息中缺失的占位符数据 (#18073) (fnx)
  • 3c4d51d 特性!: no-useless-computed-keyenforceForClassMembers 的默认值 (#18054) (Francesco Trotta)
  • 47e60f8 功能更新!: 更严格的规则测试验证 (#17654) (fnx)
  • 1a94589 功能更新!: no-unused-vars 将默认 caughtErrors 设置为 ‘all’ (#18043) (Josh Goldberg ✨)
  • [57089cb](https://github.com/eslint/eslint/commit/57089cb5166acf8b8bdba8a8dbeb0a129f841478) 功能更新!: no-restricted-imports 允许同一路径的多个配置条目 (#18021) (Milos Djermanovic)
  • 2e1d549 功能更新!: 检测重复测试用例 (#17955) (Bryan Mishkin)
  • 701f1af 功能更新!: no-inner-declaration 新的默认行为和选项 (#17885) (Tanuj Kanti)
  • bde5105 修复!: 处理保存到磁盘时 --output-file 的空输出 (#17957) (Nitin Kumar)
  • 07107a5 修复!: 升级 eslint-scope@8.0.0 (#17942) (Milos Djermanovic)
  • 3ee0f6c 修复!: no-unused-vars varsIgnorePattern 在 catch 参数中的行为 (#17932) (Tanuj Kanti)
  • 51f8bc8 修复!: 仅带严重性的配置注释应保留选项 (#17945) (Milos Djermanovic)
  • d191bdd 功能更新!: 移除 CodePath#currentSegments (#17936) (Milos Djermanovic)
  • 946ae00 增强功能!: FlatRuleTester -> RuleTester (#17922) (Nicholas C. Zakas)
  • baff28c 功能更新!: 从 eslint:recommended 中移除 no-inner-declarations (#17920) (Milos Djermanovic)
  • cadfbcd feat!: 将 FlatESLint 重命名为 ESLint (#17914) (Nicholas C. Zakas)
  • d1018fc 功能更新!: 在 --quiet 模式下跳过运行警告 (#17274) (Maddy Miller)
  • fb81b1c feat!: 设置默认 schema: [],放弃对函数风格规则的支持 (#17792) (Milos Djermanovic)
  • 0b21e1f 功能更新!: 为 no-implicit-coercion 添加两个更多用例 (#17832) (Gürgün Dayıoğlu)
  • 2916c63 feat!: 默认将 Linter 切换为平面配置 (#17851) (Nicholas C. Zakas)
  • 200518e 修复!:使用 parseListConfig 解析 ‘exported’ 注释 (#17675) (amondev)
  • bdd6ba1 功能更新!: 移除 valid-jsdoc 和 require-jsdoc (#17694) (Nicholas C. Zakas)
  • 12be307 修复!:当未传递参数时 CLI 的行为 (#17644) (Nicholas C. Zakas)
  • 8fe8c56 feat!: 更新 shouldUseFlatConfig 和 CLI,使平面配置成为默认 (#17748) (Nicholas C. Zakas)
  • 60dea3e 功能更新!: 弃用 no-new-symbol,推荐使用 no-new-native-nonconstructor (#17710) (Francesco Trotta)
  • 5aa9c49 功能更新!:检查建议修复中的解析错误 (#16639) (Bryan Mishkin)
  • b3e0bb0 增强功能!:在规则测试器中断言建议消息是唯一的 (#17532) (Josh Goldberg ✨)
  • e563c52 feat!: no-invalid-regexp 使 allowConstructorFlags 区分大小写 (#17533) (Josh Goldberg ✨)
  • e5f02c7 修复!: no-sequences 规则模式修复 (#17878) (MHO)
  • 6ee3e9e 功能更新!:更新 eslint:recommended 配置 (#17716) (Milos Djermanovic)
  • c2cf85a 功能更新!: 在扁平配置数组中放弃对字符串配置的支持 (#17717) (Milos Djermanovic)
  • c314fd6 功能更新!: 移除 SourceCode#getComments() (#17715) (Milos Djermanovic)
  • ae78ff1 功能更新!: 移除已废弃的上下文方法 (#17698) (Nicholas C. Zakas)
  • [f71c328](https://github.com/eslint/eslint/commit/f71c328e2786e2d73f168e43c7f96de172484a49) 功能更新!: 在 API 中交换 FlatESLint-ESLint、FlatRuleTester-RuleTester (#17823) (Nicholas C. Zakas)
  • 5304da0 功能更新!: 移除除 html、json(含元数据)和 stylish 之外的格式化器 (#17531) (Josh Goldberg ✨)
  • e1e827f 增强功能!: 需要 Node.js ^18.18.0 || ^20.9.0 || >=21.1.0 (#17725) (Milos Djermanovic)

特性

🌐 Features

错误修复

🌐 Bug Fixes

  • [610c148](https://github.com/eslint/eslint/commit/610c1486dc54a095667822113eb08062a1aad2b7) 修复:在 no-lone-blocks 中支持 using 声明 (#18269)(Kirk Waiblinger)
  • e508800 修复:规则测试器忽略无关的测试用例属性 (#18235) (fnx)
  • a129acb 修复:忽略对象上的扁平配置名称 (#18258) (Nicholas C. Zakas)
  • dadc5bf 修复: constructor-super 循环中的误报 (#18226) (Milos Djermanovic)
  • ae8103d 修复:在平面配置模式下在 CLI 中加载插件 (#18185) (Francesco Trotta)
  • e37153f 修复:改进无效规则配置的错误信息 (#18147) (Nitin Kumar)
  • af6e170 修复:在发生错误后停止对文件进行 lint (#18155) (Francesco Trotta)
  • 0cb4914 修复:当评论仅启用严重性时验证选项以启用规则 (#18133) (Milos Djermanovic)
  • c4d26fd 修复: use-isnan 不会报告 SequenceExpression 的问题 (#18059) (StyleShit)
  • 39076fb 修复:在 RuleTester 中处理绝对文件路径 (#17989) (Nitin Kumar)
  • 6d11f3d 修复:确保配置错误时打印配置键 (#17980) (Nicholas C. Zakas)
  • 806f708 修复: no-misleading-character-class 的边缘情况及详细错误 (#17970) (Milos Djermanovic)
  • f182114 修复:扁平配置中的深度合并行为 (#17906) (Francesco Trotta)
  • b577e8a 修复:允许配置中的循环引用 (#17752) (Francesco Trotta)

文档

🌐 Documentation

  • e151050 文档:将入门指南更新为新的 @eslint/create-config (#18217) (唯然)
  • 94178ad 文档:提到平面配置中的 name 字段 (#18252) (Anthony Fu)
  • 1765c24 文档:添加故障排除页面 (#18181) (Josh Goldberg ✨)
  • 96607d0 文档:版本选择器同步 (#18260) (Milos Djermanovic)
  • 651ec91 文档:从规则示例中删除 /* eslint-env */ 注释 (#18249) (Milos Djermanovic)
  • 950c4f1 文档:更新自述文件(GitHub Actions 机器人)
  • 12f5746 文档:在扁平配置中添加关于点文件和目录的信息 (#18239) (Tanuj Kanti)
  • b93f408 文档:更新共享设置示例 (#18251) (Tanuj Kanti)
  • 26384d3 文档:修复一个示例中的 ecmaVersion,添加检查 (#18241) (Milos Djermanovic)
  • 7747097 文档:更新 PR 审查流程 (#18233) (Nicholas C. Zakas)
  • b07d427 文档:修复拼写错误 (#18246) (Kirill Gavrilov)
  • 778082d 文档:添加术语表页面 (#18187) (Josh Goldberg ✨)
  • 239a7e2 文档:澄清 sort-imports 选项的描述 (#18198) (gyeongwoo park)
  • 4769c86 文档:修复 no-lone-blocks 中的错误示例 (#18215) (Tanuj Kanti)
  • 5251327 文档:更新自述文件(GitHub Actions 机器人)
  • 1dc8618 文档:更新自述文件(GitHub Actions 机器人)
  • ba1c1bb 文档:更新自述文件(GitHub Actions 机器人)
  • 337cdf9 文档:解释 RuleTester 修复测试的限制 (#18175) (Nicholas C. Zakas)
  • c7abd89 文档:解释 Node.js 版本支持 (#18176) (Nicholas C. Zakas)
  • d961eeb 文档:在规则文档的示例中显示红色下划线 (#18041) (太田洋介)
  • 558274a 文档:更新自述文件(GitHub Actions 机器人)
  • 2908b9b 文档:更新发布文档 (#18174) (Nicholas C. Zakas)
  • 1f1260e 文档:将 HackerOne 链接替换为 GitHub 公告 (#18165) (Francesco Trotta)
  • e5ef3cd 文档:在 no-fallthrough 中添加内联用例条件 (#18158) (Tanuj Kanti)
  • 450d0f0 文档:修复 ignore 选项文档 (#18154) (Francesco Trotta)
  • 5fe095c 文档:在下拉菜单中显示 v8.57.0 作为最新版本 (#18142) (Milos Djermanovic)
  • 7db5bb2 文档:在下拉菜单中显示预发布版本 (#18135) (Nicholas C. Zakas)
  • 73a5f06 文档:更新自述文件(GitHub Actions 机器人)
  • f95cd27 文档:禁止在同一示例中配置多个规则注释 (#18116) (Milos Djermanovic)
  • d8068ec 文档:更新 schema 示例的链接 (#18112) (Svetlana)
  • f1c7e6f 文档:切换到道德广告 (#18090) (Strek)
  • 15c143f 文档:JS Foundation -> OpenJS Foundation 在 PR 模板中 (#18092) (Nicholas C. Zakas)
  • 6ea339e 文档:在 v9 迁移指南中添加更严格的规则测试验证 (#18085) (Milos Djermanovic)
  • 3c816f1 文档:从 CLI 使用相对链接到核心概念 (#18083) (Milos Djermanovic)
  • 9458735 文档:修复规则示例中格式错误的 eslint 配置注释 (#18078) (Francesco Trotta)
  • 07a1ada 文档:从 --fix CLI 文档链接到相关核心概念 (#18080) (Bryan Mishkin)
  • b844324 文档:更新团队职责 (#18048) (Nicholas C. Zakas)
  • aadfb60 文档:记录 context 的 languageOptions 及其他 v9 变更 (#18074) (fnx)
  • 857e242 文档:调整 meta.docs 规则属性的说明 (#18057) (Bryan Mishkin)
  • 10485e8 文档:建议使用 messageId 而不是 message 来报告规则违规 (#18050) (Bryan Mishkin)
  • 98b5ab4 文档:更新自述文件(GitHub Actions 机器人)
  • 505fbf4 文档:更新 no-restricted-imports 规则 (#18015) (Tanuj Kanti)
  • c25b4af 文档:更新自述文件(GitHub Actions 机器人)
  • 33d1ab0 文档:在 flat 配置忽略文档中添加更多示例 (#18020) (Milos Djermanovic)
  • e6eebca 文档:更新 sort-keys 选项属性计数 (#18025) (LB (Ben Johnston))
  • 1fedfd2 文档:改进平面配置忽略文档 (#17997) (Nicholas C. Zakas)
  • 38b9b06 文档:更新 valid-typeof 规则 (#18001) (Tanuj Kanti)
  • b4abfea 文档:更新有关 ECMAScript 支持的说明 (#17991) (Francesco Trotta)
  • 6788873 文档:更新发布博客文章模板 (#17994) (Nicholas C. Zakas)
  • 1f37442 文档:添加关于非 npm 插件配置的章节 (#17984) (Nicholas C. Zakas)
  • 96307da 文档:no-inner-declarations 的迁移指南条目 (#17977) (Tanuj Kanti)
  • 40be60e 文档:更新自述文件(GitHub Actions 机器人)
  • d31c180 文档:修复自定义规则页面上的代码路径事件数量 (#17969) (Richard Hunter)
  • 1529ab2 文档:在 v9 迁移指南中重新排序条目 (#17967) (Milos Djermanovic)
  • 9507525 文档:解释如何合并配置 (#17947) (Nicholas C. Zakas)
  • 7c78576 文档:添加更多已移除的 context 方法以迁移到 v9 指南 (#17951) (Milos Djermanovic)
  • 3a877d6 文档:更新已移除的 CLI 标志迁移 (#17939) (Nicholas C. Zakas)
  • 4a9cd1e 文档:更新 v9 的 Linter API (#17937) (Milos Djermanovic)
  • 2a8eea8 文档:更新 v9.0.0-alpha.0 的文档 (#17929) (Milos Djermanovic)
  • 7f0ba51 文档:在版本选择器中显示 NEXT (#17911) (Milos Djermanovic)
  • 0a7911e 文档:在 v9 迁移指南中添加平面配置默认值 (#17927) (Milos Djermanovic)
  • 94f8065 文档:添加 CLI 更新以迁移到 v9 指南 (#17924) (Nicholas C. Zakas)
  • 16187f2 文档:在迁移到 v9 指南中添加导出和字符串配置说明 (#17926) (Nicholas C. Zakas)
  • 3ae50cc 文档:添加 RuleTester 更改以迁移到 v9 指南 (#17923) (Nicholas C. Zakas)
  • 0831b58 文档:在 v9 迁移指南中添加规则更改 (#17925) (Milos Djermanovic)
  • 037abfc 文档:更新 API 文档 (#17919) (Milos Djermanovic)
  • afc3c03 文档:在 v9 迁移指南中添加函数风格和 meta.schema 变更 (#17912) (Milos Djermanovic)
  • 1da0723 文档:更新迁移到 v9.x 中的 eslint:recommended 部分 (#17908) (Milos Djermanovic)
  • f55881f 文档:移除 configuration-files-new.md (#17907) (Milos Djermanovic)
  • 63ae191 文档:迁移到 v9.0.0 (#17905) (Nicholas C. Zakas)
  • e708496 文档:默认切换到扁平配置 (#17840) (Nicholas C. Zakas)
  • fdf0424 文档:更新为平面配置创建插件 (#17826) (Nicholas C. Zakas)
  • e6a91bd 文档:将可共享配置文档切换为使用扁平配置 (#17827) (Nicholas C. Zakas)
  • 3831fb7 文档:更新了 max-lines 规则的示例 (#17898) (Tanuj Kanti)
  • cd1ac20 文档:更新自述文件(GitHub Actions 机器人)

构建相关

🌐 Build Related

  • 26010c2 构建:9.0.0-rc.0 的更新日志更新(Jenkins)
  • b91f9dc 构建:修复 prism-eslint-hooks.js 中的 TypeError (#18209) (Francesco Trotta)
  • d7ec0d1 构建:9.0.0-beta.2 的更新日志更新(Jenkins)
  • fd9c0a9 构建:9.0.0-beta.1 的更新日志 (Jenkins)
  • c9f2f33 构建:8.57.0 更新日志 (#18144) (Milos Djermanovic)
  • 1bbc495 构建:9.0.0-beta.0 的更新日志更新(Jenkins)
  • 96f8877 构建:9.0.0-alpha.2 的更新日志 (Jenkins)
  • 52d5e7a 构建:9.0.0-alpha.1 的更新日志更新(Jenkins)
  • c2bf27d 构建:在发布预发布版本时更新文档文件 (#17940) (Milos Djermanovic)
  • e91d85d 构建:9.0.0-alpha.0 的更新日志更新(Jenkins)

杂项

🌐 Chores

  • 19f9a89 杂务:更新依赖以适配 v9.0.0 (#18275) (Nicholas C. Zakas)
  • 7c957f2 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • d73a33c 事务:在链接检查器中忽略 /docs/v8.x (#18274) (Milos Djermanovic)
  • 44a81c6 杂务:升级 knip (#18272) (Lars Kappert)
  • e80b60c 杂务:移除用于测试版本选择器的代码 (#18266) (Milos Djermanovic)
  • a98babc 杂项:添加 npm 脚本以运行 WebdriverIO 测试 (#18238) (Francesco Trotta)
  • 9b7bd3b 事务:将依赖 markdownlint 更新到 ^0.34.0 (#18237) (renovate[bot])
  • 297416d 杂项:为 eslint-9.0.0-rc.0 更新 package.json (#18223) (Francesco Trotta)
  • d363c51 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • 1b841bb 杂务:修复一些评论 (#18213) (avoidaway)
  • 29c3595 任务:删除重复的词 (#18193) (cuithon)
  • acc2e06 任务:引入 Knip (#18005) (Lars Kappert)
  • 7509276 事务: 升级 @eslint/js@9.0.0-beta.2 (#18180) (Milos Djermanovic)
  • 96087b3 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • 925afa2 杂务:移除 lodash.merge 的一些使用 (#18179) (Milos Djermanovic)
  • 972ef15 杂项:移除 @eslint/js 中的无效类型 (#18164) (Nitin Kumar)
  • 32ffdd1 事务:升级 @eslint/js@9.0.0-beta.1 (#18146) (Milos Djermanovic)
  • e41425b 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • bb3b9c6 事务:升级 @eslint/eslintrc@3.0.2 (#18145) (Milos Djermanovic)
  • e462524 杂项:升级 eslint-release@3.2.2 (#18138) (Milos Djermanovic)
  • 8e13a6b 任务:修复 README.md 中的拼写错误 (#18128) (Will Eastcott)
  • 66f52e2 杂务:删除未使用的工具 rule-types.json,更新 update-rule-types.js (#18125) (Josh Goldberg ✨)
  • bf0c7ef ci:修复 pr-labeler 的 sync-labels 值 (#18124) (Tanuj Kanti)
  • cace6d0 ci:添加 PR 标签器动作 (#18109) (Nitin Kumar)
  • 1a65d3e 杂务: 从 eslint-config-eslint 导出 base 配置 (#18119) (Milos Djermanovic)
  • 9aa4df3 重构:移除 globals 依赖 (#18115) (Milos Djermanovic)
  • e40d1d7 事务:升级 @eslint/js@9.0.0-beta.0 (#18108) (Milos Djermanovic)
  • 9870f93 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • 2c62e79 事务:升级 @eslint/eslintrc@3.0.1 (#18107) (Milos Djermanovic)
  • 81f0294 杂项:升级 espree@10.0.1 (#18106) (Milos Djermanovic)
  • 5e2b292 杂项:升级 eslint-visitor-keys@4.0.0 (#18105) (Milos Djermanovic)
  • ce838ad 事务:用 npm-run-all2 ^5.0.0 替换依赖 npm-run-all (#18045) (renovate[bot])
  • 54df731 杂务:将依赖 markdownlint-cli 更新到 ^0.39.0 (#18084) (renovate[bot])
  • 8f06a60 杂务: 更新依赖 shelljs 至 ^0.8.5 (#18079) (Francesco Trotta)
  • 93ffe30 事务:将依赖 file-entry-cache 更新到 v8 (#17903) (renovate[bot])
  • 6ffdcbb 事务: 升级 @eslint/js@9.0.0-alpha.2 (#18038) (Milos Djermanovic)
  • 2c12715 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • cc74c4d 杂项:升级 espree@10.0.0 (#18037) (Milos Djermanovic)
  • dfb68b6 任务:为文档网站使用 Node.js 20 (#18026) (Milos Djermanovic)
  • 8c1b8dd 测试:为忽略文件和目录添加更多测试 (#18018) (Milos Djermanovic)
  • 60b966b 事务: 将依赖 @eslint/js 更新到 v9.0.0-alpha.1 (#18014) (renovate[bot])
  • c893bc0 事务:将 markdownlint 更新为 v0.33.0 (#17995) (Nitin Kumar)
  • c5e50ee 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • 1bf2520 事务: 将文档 CI 与核心 CI 分离 (#17897) (Nicholas C. Zakas)
  • 320787e 任务: 删除 relative-module-resolver.js (#17981) (Francesco Trotta)
  • 4926f33 重构:使用 Object.hasOwn() (#17948) (Milos Djermanovic)
  • df200e1 重构:使用 Array.prototype.at() 获取最后的元素 (#17949) (Milos Djermanovic)
  • 750b8df 事务: 将依赖 glob 更新到 v10 (#17917) (renovate[bot])
  • 74794f5 事务: 移除了未使用的 eslintrc 模块 (#17938) (Milos Djermanovic)
  • 10ed29c 杂务:移除未使用的依赖 rimraf (#17934) (Francesco Trotta)
  • 903ee60 ci:安装 eslint 时使用 --force 标志 (#17921) (Milos Djermanovic)
  • 17fedc1 事务:升级 @eslint/js@9.0.0-alpha.0 (#17928) (Milos Djermanovic)
  • cb89ef3 事务:更新 package.json 以适配 @eslint/js 版本发布(Jenkins)
  • f6f4a45 任务:为 v9 放弃 structuredClone polyfill (#17915) (Kevin Gibbons)
  • 412dcbb 杂务:升级 eslint-plugin-n 至 16.6.0 (#17916) (Milos Djermanovic)
  • 02a8baf 杂项:重命名带下划线的文件 (#17910) (Nicholas C. Zakas)
  • c0f5d91 任务:在测试中移除创建未使用的 Linter 实例 (#17902) (Milos Djermanovic)
  • 3826cdf 事务:使用 jsdoc/no-multi-asterisks 并允许空格: true (#17900) (Percy Ma)
  • a9a17b3 杂项:修复测试中获取作用域的问题 (#17899) (Milos Djermanovic)
  • 595a1f6 测试:确保 CLI 测试在 FlatESLint 下运行 (#17884) (Francesco Trotta)
  • c7eca43 杂务:将依赖 markdownlint-cli 更新到 ^0.38.0 (#17865) (renovate[bot])
  • cc0c9f7 ci: 将 github/codeql-action 从 2 升级到 3 (#17873) (dependabot[bot])

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

ESLint v10.3.0 发布
1 min read

ESLint v10.3.0 发布

我们刚刚发布了 ESLint v10.3.0,这是 ESLint 的一次小版本升级。此版本添加了一些新功能,并修复了上一版本中发现的几个错误。

ESLint v10.2.1 发布
1 min read

ESLint v10.2.1 发布

我们刚刚发布了 ESLint v10.2.1,这是 ESLint 的一个补丁版本升级。本次发布修复了上一版本中发现的几个错误。

ESLint v10.2.0 发布
2 min read

ESLint v10.2.0 发布

我们刚刚发布了 ESLint v10.2.0,这是 ESLint 的一次小版本升级。此版本添加了一些新功能,并修复了上一版本中发现的几个错误。