| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| 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 | ## エコシステム | |
| Back | FazBrowse Home | New Git URL |
0 commit comments