ESLint v2.1.0 ~ v2.3.0 までの変更点

前 [v2.0.0] | 次 [v2.4.0]

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">ESLint v2.3.0 released: <a href="https://t.co/4tRvrg5UGM">https://t.co/4tRvrg5UGM</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/705919402269679617">2016年3月5日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

`v2.1.0`と`v2.2.0`では、`v2.0.0`リリースに入ってしまった誤検出やクラッシュのバグ修正が行われました。`v2.3.0`から通常の隔週リリースに復帰しています。

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

- 日本語の Issue 管理リポジトリ: https://github.com/eslint/eslint-jp
- チャット: https://gitter.im/eslint/eslint-jp

**ピックアップ:**

- ECMAScript 2016 (ES7) をサポートしました。
- 設定ファイル`.eslintrc`の中で、`0`, `1`, `2`の代わりに`"error"`, `"warn"`, `"off"`文字列が使えるようになりました。

**リリースノート(英語):**

- [v2.1.0](http://eslint.org/blog/2016/02/eslint-v2.1.0-released)
- [v2.2.0](http://eslint.org/blog/2016/02/eslint-v2.2.0-released)
- [v2.3.0](http://eslint.org/blog/2016/03/eslint-v2.3.0-released)

# [#3626](https://github.com/eslint/eslint/issues/3626) 文字列によるルール設定

従来は、ルールの On / Off を数値によって行っていました。

- `0` - Off
- `1` - On (警告扱い)
- `2` - On (エラー扱い)

`v2.3.0`から、これを文字列によって指定できるようになります。

- `"off"` - Off
- `"warn"` - On (警告扱い)
- `"error"` - On (エラー扱い)

引き続き数値でも指定できるので、既存の設定ファイルはそのまま使うことができます。

# [#5260](https://github.com/eslint/eslint/issues/5206) eslint-disable-next-line 

次の行で ESLint の警告を無視せよと指示するためのコメントです。

```js
//eslint-disable-next-line no-constant-condition
while (true) {
  if (foo()) {
    break;
  }
}
```

ルール名を省略するとすべての警告を無視します (あまりおすすめしません)。

# [#5401](https://github.com/eslint/eslint/issues/5401) ECMAScript 2016 (ES7) サポート

ECMAScript 2016 では、`Array.prototype.includes`メソッドとべき乗演算子 (`**`)が追加されました。
それ以外の新機能提案 (async/await 等) は来年以降に持ち越しです。

- [ECMAScript 2016 仕様書ドラフト](https://tc39.github.io/ecma262/2016/)

ESLint で ECMAScript 2016 (ES7) の新しい機能を利用するには、`parserOptions`を指定します。
`es6: true`も必要な点に注意してください (ECMAScript 2016 (ES7) では新しいグローバル変数が増えなかったので、`es7: true`という指定はありません)。

```js
{
    "env": {
        "es6": true       // ES6 で追加されたグローバル変数群を定義する
    },
    "parserOptions": {
        "ecmaVersion": 7  // 構文解析器に ES7 を使うと伝える
    }
}
```

この辺り、構文解析器の設定と変数解析の設定が分離していることが混乱の元になっていて、将来的に改善される予定です。

# 新しいルール

- [#3966](https://github.com/eslint/eslint/issues/3966) - [no-restricted-globals](http://eslint.org/docs/rules/no-restricted-globals) - 指定したグローバル変数を利用すると警告するルールです。「リファクタリングによって削除された変数への参照が、偶然にグローバル変数と同じ名前であるために警告されない」という事態を避けることを目的とします。特に`browser`環境には`name`, `top`, `event`など一般的な名称のグローバル変数があります。使わないものは禁止してしまうのが良さそうです。
- [#5009](https://github.com/eslint/eslint/issues/5009) - [newline-before-return](http://eslint.org/docs/rules/newline-before-return) - `return`文の前に改行がなければ警告するスタイル・ルールです。

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

- [#5056](https://github.com/eslint/eslint/issues/5056), [#5092](https://github.com/eslint/eslint/issues/5092) - [padded-blocks](http://eslint.org/docs/rules/padded-blocks) - `switch`文とクラス定義の先頭と末尾の空行を警告するオプションが追加されました。
- [#5249](https://github.com/eslint/eslint/issues/5249) - [no-invalid-regexp](http://eslint.org/docs/rules/no-invalid-regexp) - `RegExp`コンストラクタの第2引数が受け入れられるフラグを追加するオプションが追加されました。これは "Transpilers は使わないけれど Polyfill は利用する" という場合に便利です。
- [#5348](https://github.com/eslint/eslint/issues/5348) - [no-magic-numbers](http://eslint.org/docs/rules/no-magic-numbers) - JSXタグの属性に書かれた数値を許可するオプションが追加されました。(例: `<input maxLength={10} />`)

[v2.0.0]: http://qiita.com/mysticatea/items/8bcecd821cca9e849078
[v2.4.0]: http://qiita.com/mysticatea/items/c95a7b769a5f11b518ea