File tree 1 file changed +20
-1
lines changed
1 file changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -239,9 +239,28 @@ add(1, 3);
239
239
このようにして、ルールは ` context ` という与えられたものだけを使うので、ルールができることを制御しやすくなり、
240
240
ルールがMyLinter本体の実装の詳細を知らなくても良くなります。
241
241
242
-
243
242
## どういう用途に向いている?
243
+
244
+ このプラグインアーキテクチャはPub/Subパターンを上手くつかっていて、
245
+ ESLintのように与えられたコードを読み取ってチェックするような使い方に向いています。
246
+
247
+ つまり、read-onlyなプラグインのアーキテクチャとしてはパフォーマンスも期待できると思います。
248
+
249
+ また、ルールは ` context ` という与えられたものだけを使うようになっているため、
250
+ ルールと本体のコードが密結合になりにくく、本体がプラグインが行える範囲を制御しやすいと言えます。
251
+
244
252
## どういう用途に向いていない?
253
+
254
+ 逆に与えられたコード(AST)を書き換えするようなことをする場合には、
255
+ プラグインが同時に処理を行うためプラグイン間で競合するような変更がある場合に破綻してしまいます。
256
+
257
+ そのため、この仕組みに加えてもう一つ抽象レイヤーを設けないと対応は難しいと思います。
258
+
259
+ つまり、read-writeなプラグインのアーキテクチャとしては単純にこのパターンだけでは難しい部分が出てくるでしょう。
260
+
245
261
## この仕組みを使ってるもの
246
262
263
+ - [ azu/textlint] ( https://github.com/azu/textlint " azu/textlint ")
264
+ - テキストやMarkdownをパースしてASTにしてLintするツール
265
+
247
266
## エコシステム
You can’t perform that action at this time.
0 commit comments