今年 7 月,我们宣布了 ESLint 未来的计划。部分公告提到将 ESLint 转变为一个更通用的代码检查工具,能够对任何语言进行检查。ESLint 的很多核心功能(如查找文件、解析文件、报告问题)都是通用的,因此过去几个月我们一直在提取核心中与 JavaScript 相关的部分。现在,我们很高兴地分享,这项工作已经取得了成果,使 ESLint 现在可以检查 JSON 和 Markdown 文件了!
使用 @eslint/json 进行 JSON 检查
通过 @eslint/json 插件可以实现对 JSON 的检查,这是一个官方支持的语言插件。该插件提供对 JSON、JSONC(带注释的 JSON)和 JSON5 的解析。要使用该插件,可以从 npm 安装它:
1 | npm install @eslint/json -D |
然后更新你的配置文件:
1 | import json from "@eslint/json"; |
该插件内置了多条规则,我们也欢迎更多建议。如果你有规则的想法,可以提交一个 Issue。
更多关于配置 JSON 检查的信息,请查看 README。
使用 @eslint/markdown 进行 Markdown 检查
通过 @eslint/markdown 插件可以实现对 Markdown 的检查,这是 eslint-plugin-markdown 插件的下一代版本,后者仅包含处理器。而新版本是官方支持的语言插件,支持 CommonMark 和 GitHub 风格的 Markdown 解析及规则。要使用该插件,可以从 npm 安装它:
1 | npm install @eslint/markdown -D |
然后更新你的配置文件:
1 | // eslint.config.js |
与 JSON 插件类似,该插件内置了多条规则,也欢迎更多建议。如果你有规则的想法,可以提交一个 Issue。
更多关于配置 Markdown 检查的信息,请查看 README。
创建自定义规则和使用代码浏览器
@eslint/json 和 @eslint/markdown 都会将源代码解析成 AST(抽象语法树),然后遍历 AST 来运行规则,就像 ESLint 对 JavaScript 所做的一样。这意味着你可以像为 JavaScript 编写自定义规则一样为 JSON 和 Markdown 编写自定义规则。主要的区别在于 AST 的格式。JSON 使用的是 Momoa AST,而 Markdown 使用的是 mdast。由于目前帮助你检查其他 AST 格式的资源较少,我们很高兴地宣布推出代码浏览器。
ESLint 代码浏览器
代码浏览器允许你查看和探索不同语言的 AST,有助于创建自定义规则。对于 JSON 和 Markdown,你将看到可展开的 AST 视图,而对于 JavaScript,你不仅可以看到 AST,还可以看到解析代码时 ESLint 生成的作用域和代码路径信息。今后,我们将继续为代码浏览器添加新的语言和功能,帮助你创建自定义规则。
最棒的是,代码浏览器是开源的,所以你也可以帮助我们让它变得更好。
编写你自己的语言插件
ESLint 语言设计成可以在任何插件中使用新的 languages
键。@eslint/json 和 @eslint/markdown 插件不仅用于提供对 JSON 和 Markdown 的检查,还可以作为如何创建自定义语言的示例。你可以查看语言文档,了解如何创建自己的语言。
结论
检查 JavaScript 以外的语言一直是 ESLint 路线图上的目标之一,因此我们很高兴能达到这一里程碑。我们的长期目标是确保 ESLint 能够检查任何 Web 项目中使用的文件,无论是通过官方支持的语言插件还是社区编写的插件。借助 JavaScript、JSON 和 Markdown,我们已经在实现这一目标的道路上迈出了重要一步。
最后提醒一下,ESLint 是一个由志愿者在业余时间维护的独立开源项目。如果你喜欢使用 ESLint,请和你的公司讨论赞助该项目的可能性。