Skip to content

Commit ddec3ae

Browse files
committed
feat(ESLint): エコシステムについてを追加
- 2.0の書き換えについて
1 parent c03db72 commit ddec3ae

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

ja/ESLint/README.md

+35-2
Original file line numberDiff line numberDiff line change
@@ -252,15 +252,48 @@ ESLintのように与えられたコードを読み取ってチェックする
252252
## どういう用途に向いていない?
253253

254254
逆に与えられたコード(AST)を書き換えするようなことをする場合には、
255-
プラグインが同時に処理を行うためプラグイン間で競合するような変更がある場合に破綻してしまいます
255+
ルールを同時に処理を行うためルール間で競合するような変更がある場合に破綻してしまいます
256256

257257
そのため、この仕組みに加えてもう一つ抽象レイヤーを設けないと対応は難しいと思います。
258258

259259
つまり、read-writeなプラグインのアーキテクチャとしては単純にこのパターンだけでは難しい部分が出てくるでしょう。
260260

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+
261265
## この仕組みを使ってるもの
262266

263267
- [azu/textlint](https://github.com/azu/textlint "azu/textlint")
264268
- テキストやMarkdownをパースしてASTにしてLintするツール
265269

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+
柔軟な設定のしくみと設定を共有しやすい形を持っていると言えます。

0 commit comments

Comments
 (0)