Open4
TypeScript の型情報を利用する ESLint rule の作り方を調べる
前提: (TypeScript に限らない)ESLint rule の作り方
超ざっくりで、
-
lib/rules/<rule-name>.js
でimport('eslint').Rule.RuleModule
を満たすオブジェクトを export する- 必須要素は2つ
-
meta
: ドキュメントやオプションのスキーマ, レポートされうるメッセージのリスト, etc. -
create
: AST を walk して警告する実装をする関数
-
- 必須要素は2つ
だけ。
test や doc に関する規定もドキュメントに書いてるけど、これは必須なのかな?
JSConf 2021 でやってたライブコーディングでは src/index.ts
で rules
object を export していた
このやりかたでもいいのかな?
@typescript-eslint/eslint-plugin
では
-
rules/<rule_name>.ts
では RuleModule を default export -
rules/index.ts
では全 rule を集約した巨大オブジェクトを default export -
index.ts
でrules/index.ts
で作った巨大オブジェクトをrules
という名前で export
テストには RuleTester
というクラスが提供されているので、これを使う
ふつうに jest に食わせればいいのか