宣布 ES6 和 JSX 支持

我们已开始着手集成 ES6 和 JSX。 预发布版本可供测试。 我们还将分享您如何进一步贡献以及我们针对正式版本的计划。

我们已经研究 #1291 一段时间了,旨在了解如何将 ECMAScript 6 和 JSX 支持添加到 ESLint 中。 在我们研究添加 ES6 支持的同时,我们也收到了大量添加 JSX 支持的请求。 我们很快意识到,Facebook 的 Esprima 分支同时支持 ES6 和 JSX,这将是最简单的前进方向。

这给我们留下了一些关于如何在 ESLint 中支持 ES6 和 JSX 的问题,同时又不会干扰那些不需要支持的用户的用户体验。 当您在严格的 ES5 环境中工作时,您不希望将 ES6 和 JSX 模式解析为正确的,您希望抛出语法错误。 因此,大量的工作都投入到思考这个问题上 - 确保想要获得支持的人可以获得支持,同时确保不想要支持的人将获得他们期望的语法错误。

工作已经开始

从今天开始,集成 ES6 和 JSX 的工作将正式启动。 这意味着:

  • 在主 ESLint 仓库es6jsx 分支上开始工作。
  • 开发工作将在 masteres6jsx 分支上同时进行。 es6jsx 分支将定期从 master 分支拉取更改以保持最新。
  • 如果问题与此支持直接相关,则会被标记为 es6jsx
  • 发布候选版本将定期发布到 npm,并带有 es6jsx 标签。

尝试测试

您可以通过 npm 安装最新的启用 ES6/JSX 的 ESLint 版本

npm i eslint@es6jsx

请测试一下,并告诉我们您的想法。

默认情况下,您仍将处于 ES5 模式。 为了启用 ES6 和/或 JSX,您可以将该信息添加到您的 .eslintrc 文件中。 有关更多信息,请参阅文档

注意: 这不是 ESLint 的生产就绪版本。 这是一个预发布版本,旨在收集反馈。 请不要将此版本集成到您的构建系统中。

您如何提供帮助

我们需要您的帮助,以在向 ESLint 添加 ES6 和 JSX 支持方面取得进展

  • 由于 Esprima 1.2.2 和最新版本(Facebook 的 Esprima 分支基于此版本)之间的不兼容性,仍然有很多测试失败。 我们已经在 Esprima 中提出了 一个问题,我们需要帮助以某种方式解决。 如果您或您认识的某人在 Esprima 工作,请帮助我们推动这个问题得到解决。
  • 我们需要 更多测试 来验证我们的支持是完整且按预期运行的。
  • 如果 es6jsx 版本中的任何内容似乎无法正常工作,请提交问题。
  • 我们非常依赖 escope 来计算正确的变量作用域。 在 no-unused-vars 等规则能够正常工作之前,需要将 escope 更新为 支持 ES6。 一旦发生这种情况,我们就可以与其他人合作创建一个分支,为 JSX 添加作用域信息。

何时完成?

我们希望在年底前发布一个支持 ES6 和 JSX 语法的 ESLint 版本。 我们很可能需要逐步增加对两者的支持,因此第一个正式版本可能只包含解析 ES6 和 JSX 而不抛出语法错误的功能。 我们需要在未来继续努力添加变量作用域和其他功能。

最新的 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 的次要版本升级。 此版本添加了一些新功能,并修复了先前版本中发现的几个错误。