| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -252,15 +252,48 @@ ESLintのように与えられたコードを読み取ってチェックする | |||
| 252 | 252 | ## どういう用途に向いていない? | |
| 253 | 253 | ||
| 254 | 254 | 逆に与えられたコード(AST)を書き換えするようなことをする場合には、 | |
| 255 | - プラグインが同時に処理を行うためプラグイン間で競合するような変更がある場合に破綻してしまいます。 | ||
| 255 | + ルールを同時に処理を行うためルール間で競合するような変更がある場合に破綻してしまいます。 | ||
| 256 | 256 | ||
| 257 | 257 | そのため、この仕組みに加えてもう一つ抽象レイヤーを設けないと対応は難しいと思います。 | |
| 258 | 258 | ||
| 259 | 259 | つまり、read-writeなプラグインのアーキテクチャとしては単純にこのパターンだけでは難しい部分が出てくるでしょう。 | |
| 260 | 260 | ||
| 261 | + > **NOTE** ESLint 2.0でautofixing、つまり書き換えの機能の導入が予定されています。 | ||
| 262 | + > これは`SourceCode`抽象オブジェクトをルールに、書き換えのコマンドを蓄積して最後に実際に書き換えを行うという抽象レイヤーを設けています。 | ||
| 263 | + > - [Implement autofixing · Issue #3134 · eslint/eslint](https://github.com/eslint/eslint/issues/3134 "Implement autofixing · Issue #3134 · eslint/eslint") | ||
| 264 | + | ||
| 261 | 265 | ## この仕組みを使ってるもの | |
| 262 | 266 | ||
| 263 | 267 | - [azu/textlint](https://github.com/azu/textlint "azu/textlint") | |
| 264 | 268 | - テキストやMarkdownをパースしてASTにしてLintするツール | |
| 265 | 269 | ||
| 266 | - ## エコシステム | ||
| 270 | + ## エコシステム | ||
| 271 | + | ||
| 272 | + ESLintのルールはただのJavaScriptファイルであり、またESLintは主に開発時に使うツールとなっています。 | ||
| 273 | + | ||
| 274 | + ルール自体を[npm](https://www.npmjs.com/ "npm")で公開したり、ルールや設定をまとめたものをESLintでは"Plugin"と呼び、 | ||
| 275 | + こちらもnpmで公開して利用するのが一般的な使い方になっています。 | ||
| 276 | + | ||
| 277 | + また、ESLintはデフォルトで有効なルールがないので、設定ファイルを作るか、 | ||
| 278 | + [sindresorhus/xo](https://github.com/sindresorhus/xo "sindresorhus/xo")といったESLintのラッパーを利用する形となります。 | ||
| 279 | + | ||
| 280 | + ESLint公式の設定として`eslint:recommended`が用意されていて、これを`extends`することで推奨の設定を継承できます。 | ||
| 281 | + | ||
| 282 | + ```json | ||
| 283 | + { | ||
| 284 | + "extends": "eslint:recommended" | ||
| 285 | + } | ||
| 286 | + ``` | ||
| 287 | + | ||
| 288 | + これらの設定自体もJavaScriptで表現できるため、設定もnpmで公開して利用できるようになっています。 | ||
| 289 | + | ||
| 290 | + - [Shareable Configs - ESLint - Pluggable JavaScript linter](http://eslint.org/docs/developer-guide/shareable-configs "Documentation - ESLint - Pluggable JavaScript linter") | ||
| 291 | + | ||
| 292 | + これはコーディングルールが多種多様なように、ESLintで必要なルールも個人差があるので、 | ||
| 293 | + 柔軟に対応できるようにするためでもあり、_The pluggable linting utility_を表現している仕組みとなってます。 | ||
| 294 | + | ||
| 295 | + このように、ESLintルールや設定といった殆どの部分をJavaScriptのモジュールの仕組みで利用できるようにし、 | ||
| 296 | + それらを[npm](https://www.npmjs.com/ "npm")を使って公開しやすいような形を取っています。 | ||
| 297 | + | ||
| 298 | + 設定なしで使えるのが一番楽ですが、そこが現実として難しいため、 | ||
| 299 | + 柔軟な設定のしくみと設定を共有しやすい形を持っていると言えます。 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments