- ESLintは今年7月、今後ESLintをより汎用的な用途のlinterへと移行し、あらゆる言語に対するリンティング機能を提供していく計画を発表した
- ここ数か月にわたりJavaScript固有の部分を切り出す作業を進めてきたが、その結果としてESLintはJSONとMarkdownのリンティングをサポートするようになった
@eslint/json を使ったJSONリンティング
@eslint/json プラグインは、公式にサポートされる言語プラグイン
- このプラグインは、JSON、JSONC(コメント付きJSON)、JSON5のパース機能を提供する
- プラグインを利用するには、npmからインストールして設定ファイルを更新する必要がある
- プラグインにはいくつかの組み込みルールがあり、さらに多くの提案を募集している
@eslint/markdown を使ったMarkdownリンティング
@eslint/markdown プラグインは eslint-plugin-markdown の次世代版であり、公式にサポートされる言語プラグイン
- このプラグインは、CommonMarkとGitHub-Flavored Markdownのパース機能とルールを提供する
- プラグインを利用するには、npmからインストールして設定ファイルを更新する必要がある
- JSONプラグインと同様に組み込みルールがあり、さらに多くの提案を募集している
カスタムルールの作成とCode Explorerの利用
@eslint/json と @eslint/markdown は、JavaScriptと同様にソースコードをASTとしてパースし、ASTを走査してルールを実行する
- そのため、JavaScriptと同じようにJSONやMarkdown向けのカスタムルールを作成できる
- 主な違いはASTの形式で、JSONはMomoa AST、Markdownはmdastを使用する
- 異なるAST形式を調べるのに役立つリソースがあまり多くないため、Code Explorerを公開した
- Code Explorerを使うと、カスタムルール作成の助けとして、さまざまな言語のASTを表示・探索できる
言語プラグインの作成
- ESLintの言語機能は、新しい
languages キーを使って、あらゆるプラグインに組み込めるよう設計されている
@eslint/json と @eslint/markdown プラグインは、JSONとMarkdownのリンティングを提供するだけでなく、言語の作り方の例としても提供されている
- 言語ドキュメントを参照すれば、自分独自の言語を作る方法を学べる
結論
- JavaScript以外の言語をリンティングすることはESLintのロードマップに含まれていたため、このマイルストーンに到達できたことに大きな興奮を感じている
- ESLintの長期的な目標は、Webプロジェクトで使われるあらゆる種類のファイルを、公式サポートの言語プラグインまたはコミュニティ製プラグインでリンティングできるようにすること
- JavaScript、JSON、Markdownによって、すでにその目標に向けて順調に進んでいる
1件のコメント
Markdown、いいですね