ESLint v8.x 已于 2024 年 10 月 5 日停止维护,不再提供支持。请升级到最新版本 或考虑长期支持选项

ESLint 现在正式支持 JSON 和 Markdown 的代码风格检查

迈出构建语言无关的源代码风格检查平台的第一步。

早在 7 月份,我们就宣布了 ESLint 的未来计划。公告中的一部分内容讨论了将 ESLint 转变为更通用的代码风格检查工具,使其能够检查任何语言的代码。ESLint 的许多核心功能(例如查找文件、解析文件、报告问题)都是通用的,因此我们在过去几个月里提取了核心代码中与 JavaScript 相关的部分。我们很高兴地宣布,这项工作已经取得了成果,ESLint 现在可以检查 JSON 和 Markdown 代码了!

使用 @eslint/json 进行 JSON 代码风格检查

JSON 代码风格检查是通过使用 @eslint/json 插件实现的,这是一个官方支持的语言插件。该插件提供对 JSON、JSONC(带注释的 JSON)和 JSON5 的解析功能。要使用该插件,请从 npm 安装它。

npm install @eslint/json -D

然后更新配置文件

import json from "@eslint/json";

export default [
{
plugins: {
json,
},
},

// lint JSON files
{
files: ["**/*.json"],
language: "json/json",
rules: {
"json/no-duplicate-keys": "error",
},
},
];

插件内置了一些规则,我们也希望收到更多建议。有规则的想法吗?提交问题

有关配置 JSON 代码风格检查的更多信息,请查看 README

使用 @eslint/markdown 进行 Markdown 代码风格检查

Markdown 代码风格检查是通过使用 @eslint/markdown 插件实现的,它是 eslint-plugin-markdown 插件的下一代版本,后者只包含一个处理器。这个新的官方支持的语言插件具有对 CommonMark 和 GitHub Flavored Markdown 的解析和规则。要使用该插件,请从 npm 安装它。

npm install @eslint/markdown -D

然后更新配置文件

// eslint.config.js
import markdown from "@eslint/markdown";

export default [
{
files: ["**/*.md"],
plugins: {
markdown
},
language: "markdown/commonmark",
rules: {
"markdown/no-html": "error"
}
}
];

与 JSON 插件类似,该插件也内置了一些规则,我们也希望收到更多建议。有规则的想法吗?提交问题

有关配置 Markdown 代码风格检查的更多信息,请查看 README

创建自定义规则和使用代码浏览器

@eslint/json@eslint/markdown 都将源代码解析成 AST,然后遍历 AST 来运行规则,就像 ESLint 对 JavaScript 所做的那样。这意味着您可以像为 JavaScript 创建自定义规则一样为 JSON 和 Markdown 创建自定义规则。主要区别在于 AST 格式。JSON 使用 Momoa AST,而 Markdown 使用 mdast。由于没有太多资源可以帮助您检查其他 AST 格式,我们很高兴地宣布推出 代码浏览器

ESLint Code Explorer

代码浏览器允许您查看和探索不同语言的 AST,以帮助创建自定义规则。对于 JSON 和 Markdown,您将获得 AST 的可扩展视图,而 JavaScript 则允许您不仅看到 AST,还可以看到 ESLint 在解析代码时生成的范围和代码路径信息。未来,我们将继续更新代码浏览器,加入新的语言和功能,以帮助您创建自定义规则。

最棒的是?代码浏览器是 开源 的,因此您可以帮助我们使其变得更好。

编写自己的语言插件

ESLint 语言的设计方式使得它们可以使用新的 languages 键包含在任何插件中。@eslint/json@eslint/markdown 插件不仅旨在分别提供 JSON 和 Markdown 的代码风格检查,而且也是创建自己的语言的示例。您可以查看 语言文档,以概述如何创建自己的语言。

结论

检查除 JavaScript 之外的其他语言的代码风格检查一直是 ESLint 的路线图,因此能够达到这一里程碑令人兴奋。我们的长期目标是确保 ESLint 可以检查 Web 项目中可能使用的任何类型的文件,无论是使用官方支持的语言插件还是社区编写的插件。有了 JavaScript、JSON 和 Markdown,我们已经朝着实现这一目标迈出了坚实的一步。

提醒一下,ESLint 是一个独立的开源项目,由一群志愿者在业余时间维护。如果您喜欢使用 ESLint,请与您的公司讨论赞助该项目

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

ESLint v9.16.0 released
阅读时间 2 分钟

ESLint v9.16.0 发布

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

ESLint v9.15.0 released
阅读时间 2 分钟

ESLint v9.15.0 发布

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

ESLint v9.14.0 released
阅读时间 2 分钟

ESLint v9.14.0 发布

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