Skip to content

Commit c03db72

Browse files
committed
feat(ESLint): 向き不向きについてを追加
1 parent c977902 commit c03db72

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

ja/ESLint/README.md

+20-1
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,28 @@ add(1, 3);
239239
このようにして、ルールは `context` という与えられたものだけを使うので、ルールができることを制御しやすくなり、
240240
ルールがMyLinter本体の実装の詳細を知らなくても良くなります。
241241

242-
243242
## どういう用途に向いている?
243+
244+
このプラグインアーキテクチャはPub/Subパターンを上手くつかっていて、
245+
ESLintのように与えられたコードを読み取ってチェックするような使い方に向いています。
246+
247+
つまり、read-onlyなプラグインのアーキテクチャとしてはパフォーマンスも期待できると思います。
248+
249+
また、ルールは `context` という与えられたものだけを使うようになっているため、
250+
ルールと本体のコードが密結合になりにくく、本体がプラグインが行える範囲を制御しやすいと言えます。
251+
244252
## どういう用途に向いていない?
253+
254+
逆に与えられたコード(AST)を書き換えするようなことをする場合には、
255+
プラグインが同時に処理を行うためプラグイン間で競合するような変更がある場合に破綻してしまいます。
256+
257+
そのため、この仕組みに加えてもう一つ抽象レイヤーを設けないと対応は難しいと思います。
258+
259+
つまり、read-writeなプラグインのアーキテクチャとしては単純にこのパターンだけでは難しい部分が出てくるでしょう。
260+
245261
## この仕組みを使ってるもの
246262

263+
- [azu/textlint](https://github.com/azu/textlint "azu/textlint")
264+
- テキストやMarkdownをパースしてASTにしてLintするツール
265+
247266
## エコシステム

0 commit comments

Comments
 (0)