ESLint v4.14.0

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

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">ESLint v 4.14.0 has been released: <a href="https://t.co/x1WNHLYaqw">https://t.co/x1WNHLYaqw</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/944710856956313601?ref_src=twsrc%5Etfw">2017年12月23日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ESLint 4.14.0 がリリースされました。
小さな機能追加とバグ修正が含まれています。

`babel-eslint` をご利用の方は、`babel-eslint` も最新版に更新してください。

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

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

# 🚀 本体への機能追加

## [#8755]: カスタム パーサーが独自の変数解析ロジックを持てるようになった

プラグイン開発者向け。

`babel-eslint` のような独自の構文を追加するカスタム パーサーは、現在の JavaScript とは異なる変数スコープ・変数宣言・変数参照を導入する構文を扱うことがあります。今までは ESLint が変数解析に関する振る舞いを変更する API を提供していなかったため、`babel-eslint` は ESLint の該当部分にモンキーパッチを当てて動作していました。その為、ESLint の内部的な変更で度々動作しなくなっていました。

この機能追加によって、カスタム パーサーはモンキーパッチ無しで独自の変数解析ロジックを持つことができるようになります。

詳細は[こちら](https://eslint.org/docs/developer-guide/working-with-plugins#working-with-custom-parsers)を御覧ください。

# 💡 新しいルール

特になし。

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

## [#9344]: [array-callback-return] allowImplicit

`Array.prototype.map` 等の値を返す必要のあるメソッドのコールバック関数で、値を返さない `return` 文を許可する (`undefined`を返すものとして扱う) オプションが追加されました。

> ```js
> /*eslint array-callback-return: [error, { allowImplicit: true }] */
> 
> //✔ GOOD
> var ys = xs.map(function(x) {
>     return
> })
> ```
> [Online demo](https://eslint.org/demo/#eyJ0ZXh0IjoiLyplc2xpbnQgYXJyYXktY2FsbGJhY2stcmV0dXJuOiBbZXJyb3IsIHsgYWxsb3dJbXBsaWNpdDogdHJ1ZSB9XSAqL1xyXG5cclxuLy/inJQgR09PRFxyXG52YXIgeXMgPSB4cy5tYXAoZnVuY3Rpb24oeCkge1xyXG4gICAgcmV0dXJuXHJcbn0pXHJcbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)

## [#9441]: [one-var] separateRequires

連続する変数宣言を1つにまとめることを強制するルールにおいて、`require()`とそれ以外の変数を分離するオプションが追加されました。

> ```js
> /*eslint one-var: ["error", { separateRequires: true, var: "always" }]*/
> /*eslint-env node*/
> 
> //✘ BAD
> function wrapper() {
>     var foo = require("foo"),
>         bar = require("bar"),
>         baz = "baz";
> }
> 
> //✔ GOOD
> function wrapper() {
>     var foo = require("foo"),
>         bar = require("bar");
>     var baz = "baz";
> }
> ```
> [Online demo](https://eslint.org/demo/#eyJ0ZXh0IjoiLyplc2xpbnQgb25lLXZhcjogW1wiZXJyb3JcIiwgeyBzZXBhcmF0ZVJlcXVpcmVzOiB0cnVlLCB2YXI6IFwiYWx3YXlzXCIgfV0qL1xyXG4vKmVzbGludC1lbnYgbm9kZSovXHJcblxyXG4vL+KcmCBCQURcclxuZnVuY3Rpb24gd3JhcHBlcigpIHtcclxuICAgIHZhciBmb28gPSByZXF1aXJlKFwiZm9vXCIpLFxyXG4gICAgICAgIGJhciA9IHJlcXVpcmUoXCJiYXJcIiksXHJcbiAgICAgICAgYmF6ID0gXCJiYXpcIjtcclxufVxyXG5cclxuLy/inJQgR09PRFxyXG5mdW5jdGlvbiB3cmFwcGVyKCkge1xyXG4gICAgdmFyIGZvbyA9IHJlcXVpcmUoXCJmb29cIiksXHJcbiAgICAgICAgYmFyID0gcmVxdWlyZShcImJhclwiKTtcclxuICAgIHZhciBiYXogPSBcImJhelwiO1xyXG59XHJcbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)

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

特になし。


[v4.13.0]: http://qiita.com/mysticatea/items/6e3631a15537ff8a7e9d
[v4.15.0]: http://qiita.com/mysticatea/items/c6c10d4749e7d69d321e
[#8755]: https://github.com/eslint/eslint/issues/8755
[#9344]: https://github.com/eslint/eslint/issues/9344
[#9441]: https://github.com/eslint/eslint/issues/9441
[#9999]: https://github.com/eslint/eslint/issues/9999
[array-callback-return]: http://eslint.org/docs/rules/array-callback-return
[one-var]: http://eslint.org/docs/rules/one-var
[xxxx]: http://eslint.org/docs/rules/xxxx

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