ESLint v3.4.0

前 [v3.3.0] | 次 [v3.5.0]

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

ESLint 3.4.0 がリリースされました。
小さな機能追加といくつかのバグ修正が行われています。

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

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

----

# :sparkles: ESLint 本体への変更

## [#6362]: Scoped パッケージによるプラグインが定義するルールの指定方法が変更された

詳しくは[ESLintでscoped modulesとして提供されているプラグインを読み込む](http://qiita.com/mizdra/items/2e3027640e454afc9b77)を参照ください。

破壊的変更を防ぐため、従来の指定方法も引き続き利用できます。
従来の指定方法は v4.0.0 がリリースされるときに削除されます。

Thanks @mizdra !

## [#6750]: `ecmaVersion`を年号形式で指定できるようになった

今まで、`ecmaVersion`はリビジョン形式でしか設定できませんでした。
例えば [ECMA-262 6th Edition / ECMAScript® 2015 Language Specification](http://www.ecma-international.org/ecma-262/6.0/) (俗称 ES6) の場合は、`ecmaVersion: 6`です。

これを年号形式でも指定できるようになりました。
上記の場合、`ecmaVersion: 2015`です。

## [#6710],[#6780]: 特定状況下での性能が改善された

ひとつは`.eslintignore`利用時の性能が改善されました。
もうひとつは`--cache`オプション利用時の性能が改善されました。

詳細はリンク先の Issue を御覧ください。

# :bulb: 新しいルール

## [#5139]: [class-methods-use-this]

`this`を一切参照していないインスタンス メソッドを警告するルールです。
そのようなメソッドは静的メソッドか関数にすべきだ、ということらしいです。

```js:例
/*eslint class-methods-use-this: error*/

// ✔ GOOD
class A {
    hello() {
        console.log(`hello, ${this.name}!`)
    }
    static hello(name) {
        console.log(`hello, ${name}!`)
    }
}

// ✘ BAD
class B {
    hello(name) {
        console.log(`hello, ${name}!`)
    }
}
```

## [#6778]: [symbol-description]

シンボル定義時に、第1引数を省略すると警告するルールです。
シンボルの第1引数はそのシンボルに関する説明であり、デバッグ時に活用できます。

> 賢い Minifier は Minify 時に削除してくれそうですね?

```js:例
/*eslint symbol-description: error*/

// ✔ GOOD
const FOO = Symbol("this is a foo")

// ✘ BAD
const BAR = Symbol()
```

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

## [#6751]: [multiline-ternary]

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

三項演算子の`?`,`:`の前後どちらかに改行を指定するべきかどうかを強制するスタイル・ルールです。
今回、改行を禁止する`never`オプションが追加されました。

```js:例
/*eslint multiline-ternary: [error, never]*/

// ✔ GOOD
let a = b ? c : d

// ✘ BAD
let a = b 
    ? c 
    : d
```

## [#6698]: [valid-typeof]

`typeof`演算の結果と、文字列以外のものを比較するのを禁止する`requireStringLiterals`オプションが追加されました。

```js:例
/*eslint valid-typeof: [error, {requireStringLiterals: true}]*/

// ✔ GOOD
typeof a === "string"
typeof b === "undefined"

// ✘ BAD
typeof a === type
typeof b === undefined
```

# :pencil: 新たに eslint --fix をサポートしたルール

## [#6944]: [no-extra-parens]

[v3.3.0]: http://qiita.com/mysticatea/items/adf6ef3c63b35c01fc05
[v3.5.0]: http://qiita.com/mysticatea/items/875c801362f337bc4ce9
[#5139]: https://github.com/eslint/eslint/issues/5139
[#6362]: https://github.com/eslint/eslint/issues/6362
[#6698]: https://github.com/eslint/eslint/issues/6698
[#6710]: https://github.com/eslint/eslint/issues/6710
[#6750]: https://github.com/eslint/eslint/issues/6750
[#6751]: https://github.com/eslint/eslint/issues/6751
[#6778]: https://github.com/eslint/eslint/issues/6778
[#6780]: https://github.com/eslint/eslint/issues/6780
[#6944]: https://github.com/eslint/eslint/issues/6944
[class-methods-use-this]: http://eslint.org/docs/rules/class-methods-use-this
[multiline-ternary]: http://eslint.org/docs/rules/multiline-ternary
[no-extra-parens]: http://eslint.org/docs/rules/no-extra-parens
[symbol-description]: http://eslint.org/docs/rules/symbol-description
[valid-typeof]: http://eslint.org/docs/rules/valid-typeof