首页/文章/eslint

ESLint 正式支持 JSON 和 Markdown

2024-10-11
14005 分钟
...

ESLint 团队近日宣布,ESLint 现已支持对 JSON 和 Markdown 文件进行代码检查。这标志着 ESLint 向提供语言无关的源代码代码检查平台迈出了重要的一步。

背景

早在七月份,ESLint 团队就发布了未来发展计划,提到将 ESLint 转型为更通用的 Linter,能够支持多种编程语言。经过几个月的努力,团队成功地提取了与 JavaScript 特定相关的核心功能,使 ESLint 现在能够对 JSON 和 Markdown 文件进行代码检查。

JSON 代码检查实现

JSON 的代码检查是通过官方支持的 @eslint/json 插件实现的。该插件支持 JSON、JSONC(带注释的 JSON)和 JSON5 的解析。用户可以通过以下命令安装插件:

npm install @eslint/json -D

安装完成后,需更新配置文件:

import json from "@eslint/json";

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

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

该插件内置了多个规则,团队也期待更多的建议。如果您有规则的想法,欢迎提交问题。

有关配置 JSON 代码检查的更多信息,请查看 README 文档。

Markdown 代码检查实现

Markdown 的代码检查则是通过 @eslint/markdown 插件实现的,这是 eslint-plugin-markdown 插件的下一代版本,后者仅包含处理器。新插件支持 CommonMark 和 GitHub-Flavored Markdown 的解析和规则。用户可以通过以下命令安装插件:

npm install @eslint/markdown -D

同样,安装后需要更新配置文件:


import markdown from "@eslint/markdown";

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

与 JSON 插件类似,Markdown 插件同样内置了多个规则,团队也期待更多的建议。有关配置 Markdown 代码检查的更多信息,请查看 README 文档。

自定义规则与代码探索器

@eslint/json@eslint/markdown 插件将源代码解析为抽象语法树(AST),并遍历 AST 以运行规则,这与 ESLint 处理 JavaScript 的方式相同。这意味着用户可以为 JSON 和 Markdown 编写自定义规则,主要区别在于 AST 格式。JSON 使用 Momoa AST,而 Markdown 使用 mdast。为了帮助用户检查不同的 AST 格式,团队推出了代码探索器(Code Explorer)。

代码探索器允许用户查看和探索不同语言的 AST,以帮助创建自定义规则。对于 JSON 和 Markdown,用户将获得可扩展的 AST 视图,而 JavaScript 则可以查看 AST、作用域和代码路径信息。未来,团队将继续更新代码探索器,添加新语言和功能,以帮助用户创建自定义规则。

最重要的是,代码探索器是开源的,欢迎大家共同参与改进。

编写自己的语言插件

ESLint 的语言设计使其能够通过新的 languages 键包含在任何插件中。@eslint/json@eslint/markdown 插件不仅提供 JSON 和 Markdown 的代码检查功能,同时也作为创建自定义语言的示例。用户可以查看语言文档,以了解如何创建自己的语言插件。

结论

支持 JavaScript 以外的语言代码检查一直是 ESLint 的发展路线图中的一部分,因此能够实现这一里程碑令人振奋。团队的长期目标是确保 ESLint 能够检查 Web 项目中使用的任何类型文件,无论是通过官方支持的语言插件还是社区编写的插件。目前,JavaScript、JSON 和 Markdown 的支持使得这一目标更加接近。

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

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
eslint2024-10-11
项目中既然有了 prettier 文件,为什么还需要 .editorconfig
文件用于设置代码格式化和文件风格的规则。这些规则可以让不同的开发者在使用不同的编辑器时,都能够保持一致的代码风格。.editorconfig 文件主要配置以下几类属性:缩进风格、缩进大小、换行符、字符编码、行末空白、文件末尾新行等。 下面是 .editorconfig 文件中可用的配置选项及其详细作用。 .editorconfig 文件详解 指定当前 文件为项目的根配置文件。如果设置为 ,编辑器在找到这个文件后不会继续向上层目录查找其他...
学习
eslint2024-09-14
eslint9+vite+vue3+prettier配置
eslint9+vite+vue3+prettier配置 今年更新eslint9之后,新建项目不再像之前那样的配置方式了,被整吐血的作者在尝试3小时之后,终于整合了eslint9+vite+vue3+prettier,完美运行,有问题可以评论,一起进步 安装插件 package.json截图 新建 ,内容如下 新建 ,内容如下 新建 ,内容如下 中的配置 最后再配置 好了,开始你的eslint9之路吧
学习
eslint2024-09-11
eslint 9.x 升级或使用指南,eslint.config.js 配置,包含 react、typescript、prettier 等常用配置升级迁移
不再支持 和 版本 名词解释: : 是 的长期支持版本(维护和安全更新),通常每隔两年发布一次,特点是稳定和可靠性,建议生产使用。 非 ( ):是 的最新开发版本,通常每隔几个月发布一次,包含最新的功能和实验特性,缺乏稳定性。 配置文件取代 配置 新版 已经取代了 配置文件,如果你是 可以将你的环境变量 设为 ,但 中已经明确表示在下一阶段 中会移除对旧配置文件的兼容。 中支持 和 两种配置文件格式,推荐使用 。 新 Rule: 规则用...
学习
eslint2024-08-19
最全的 ESLint 配置流程来了
在前端开发中,代码质量和一致性至关重要。 「ESLint」 是帮助你提升代码质量的关键工具,尤其是在使用 「Vue」 和 「React」 进行开发时,合理配置和使用 ESLint 能够大幅提升开发效率和代码质量。但是,你知道如何在 「VSCode」 中无缝集成 ESLint,并让它自动为你提示和修复代码问题吗?如果还不清楚,赶紧学习,否则你可能已经落后了! 目前您可能还用不到这篇文章,不过可以先收藏起来。希望将来它能为您提供所需的帮助!...
学习
eslint2024-08-09
还在复制粘贴 eslint 配置?封装个预置函数,彻底解放你的双手
阅读本文您将收获: 1. 了解 预置函数的设计思路。 2. 了解 预置函数实现的具体过程。 3. 了解 预置函数在实际项目中的应用。 预置函数基于 ,若版本在此之前,请查看 设计比较简单, 配置文件 中,直接调用预置函数 并导出其返回结果。 函数允许针对特定项目场景,传入自定义的配置规则,覆盖预置规则。 函数中预置了一系列 规则配置,主要分为两部分 默认启用配置 和 按需启用配置 。 默认启用配置 包括大多数项目都需要的基础配置,诸如...
学习
AI2026-09-01
Deep Agents 01:何为 Agent Harness,以及如何开始
1、本篇任务:完成一份多步骤、带证据的技术调研 普通客服 Agent 的问题短、工具少、输出即时。技术调研或编码任务会持续很久,产生计划、搜索结果、文件和中间结论。Deep Agents 在 LangChain/LangGraph 之上预装规划、虚拟文件系统、上下文压缩和子 Agent,适合这类开放任务。 本课让 Agent 比较两种向量数据库,并交付一份可验证报告。 2、什么时候需要 Deep Agent 满足以下两项以上再考虑:任务...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录