ESLint v5.14.0

前 [v5.13.0] | 次 [v5.15.0]

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">ESLint v5.14.0 has been released: <a href="https://t.co/APPusZMWtX">https://t.co/APPusZMWtX</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/1096510911781711872?ref_src=twsrc%5Etfw">February 15, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ESLint `5.14.0` がリリースされました。
小さな機能追加とバグ修正が行われました。

そろそろ `6.0.0` の足音が聞こえ始めています (リリースは Node 6 が EOL になる頃でしょう)。~~`6.0.0` では、プラグインを読み込むときに、それが書かれた設定ファイルの場所から検索するようになる予定です。共有設定がプラグインに依存しやすくなりますね。~~ EDIT(2019/04/04): 残念ながらこれは ESLint 6.0.0 に間に合いませんでした。

質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。

> 🏢 [日本語 Issue 管理リポジトリ](https://github.com/eslint/eslint-jp)
> 👫 [日本語サポート チャット](https://gitter.im/eslint/eslint-jp)
> 🏢 [本家リポジトリ](https://github.com/eslint/eslint)
> 👫 [本家サポート チャット](https://gitter.im/eslint/eslint)

# 🚀 本体への機能追加

## [#11288]: 検証ルールの `meta.schema` の型定義にて `default` キーワードを利用できるようになりました。

プラグイン開発者向け。

各ルールの `meta.schema` の型定義にて `default` キーワードを利用できるようになりました。
これを指定すると、ユーザーが指定しなかったオプションについて、自動的に `default` 値が適用されます。

詳細は [Ajv のドキュメント](https://www.npmjs.com/package/ajv#assigning-defaults) を参照ください。

## [#11332]: `eslint --init` の振る舞いが少しだけ変わりました。

質問内容が変わりました。
また、Vue.js 関連の設定を行うための選択肢が追加されました。

## [#11384]: `globals` の設定で文字列定数を使えるようになりました。

前回、[`globals` の設定で文字列定数を使えるようになりました](https://qiita.com/mysticatea/items/afc990fcdabef1d6722e#11338-globals-%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%AE%9A%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F)が、これを受けて、

- `readable` が読み取り専用を表すのは変じゃない?
- `writeable` じゃなくて `writable` では? (実際にはどちらも正しい)

という話が出てきまして、`readonly` と `writable` が追加されました。
既存の定数も引き続き利用できますが、公式には `readonly` と `writable` が正規です。

# 💡 新しいルール

特になし。

# 🔧 オプションが追加されたルール

特になし。

# ✒️ `eslint --fix` をサポートしたルール

## [#11301]: [prefer-destructuring]

分割代入を強制するルールに自動修正機能が追加されました。
(配列は修正しないみたい)

```js:例
const foo = object.foo;
// ↓↓↓↓ 自動修正 ↓↓↓↓
const {foo} = object;
```

# ⚠️ `eslint --fix` をサポートしなくなったルール

## [#11365]: [prefer-spread]

[prefer-spread] ルールの自動修正機能が削除されました。

自動修正によってコードが壊れるコーナーケースが見つかり、静的検証ではその場合を見分けることが不可能であったためです。

```js:例
foo.apply(null, { length: 10 })
// ↓↓↓↓
foo(...{ length: 10 })
```

`Function#apply` は第2引数に `Array`-like オブジェクトを受け取ることが可能な一方、スプレッド構文では `Iterable` なオブジェクトしか受け取れません。第2引数が変数であった場合に、それが `Iterable` かどうかを見分けられないので、自動修正しないことになりました。

# ⚠️ 非推奨になったルール

特になし。

[v5.13.0]: http://qiita.com/mysticatea/items/afc990fcdabef1d6722e
[v5.15.0]: http://qiita.com/mysticatea/items/1cc0afa2a3d3aa0e2de5
[#9999]: https://github.com/eslint/eslint/issues/9999
[#11288]: https://github.com/eslint/eslint/issues/11288
[#11301]: https://github.com/eslint/eslint/issues/11301
[#11332]: https://github.com/eslint/eslint/issues/11332
[#11365]: https://github.com/eslint/eslint/issues/11365
[#11384]: https://github.com/eslint/eslint/issues/11384
[xxxx]: http://eslint.org/docs/rules/xxxx
[prefer-destructuring]: http://eslint.org/docs/rules/prefer-destructuring
[prefer-spread]: http://eslint.org/docs/rules/prefer-spread

<!-- 
![JSCS Icon](http://jscs.info/favicon.ico) JSCS 互換ルールです。
-->