I just turned 3! https://t.co/vLGUoCy7Cn
— ESLint (@geteslint) 2016年6月29日
2016年 6月 30日 (日本時間) に ESLint は 3 歳の 誕生日を迎えました。
特にイベントがあったわけではありませんが、Nicholas がちょっとした誕生秘話を披露していました。
ESLint v3.0.0 released: https://t.co/keetKOrgXI
— ESLint (@geteslint) 2016年7月1日
さて、その週末に ESLint 3.0.0 がリリースされました。
メジャーバージョン アップなので、互換性のない変更があります。変更内容についてはこの記事でも解説していますが、詳しくはマイグレーション ガイド (英語) を御覧ください。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
URI | |
---|---|
日本語 Issue 管理リポジトリ | https://github.com/eslint/eslint-jp |
日本語サポート チャット | https://gitter.im/eslint/eslint-jp |
本家リポジトリ | https://github.com/eslint/eslint |
本家サポート チャット | https://gitter.im/eslint/eslint |
互換性のない変更
#4483: Node 4 未満のバージョンのサポートを終了
Node.js v0.10
は9月末、Node.js v0.12
は12月末でメンテナンス サポートが終了します (参考: https://github.com/nodejs/LTS )。これに先立って、ESLint では v0.10
と v0.12
のサポートを終了します。 ESLint 3 がサポートするのは Node.js v4
以上のバージョンとなります。
Node.js v0.10
, v0.12
で ESLint を実行する必要がある場合は ESLint 3 へのアップグレードをお控えください。
Travis CI のようなツールで複数の Node バージョンでのテストを実施する場合、同じソースコードをすべての Node バージョンで ESLint によるチェックをする必要はないかもしれません。その場合は、if-node-version のようなツールで ESLint が実行される Node バージョンを限定することもできます。
#5987: ルール設定が必須になった
ESLint 2 では、設定がない状態で ESLint を実行すると構文エラーだけをチェックしていました。
ESLint 3 からは、設定がない状態で ESLint を実行すると常にエラーを表示し、eslint --init
コマンドによって設定ファイルを作成することを促します。
ESLint couldn't find a configuration file. To set up a configuration file for this project, please run:
eslint --init
ESLint looked for configuration files in <%= directory %> and its ancestors.
If you think you already have a configuration file or if you need more help, please stop by the ESLint chat room: https://gitter.im/eslint/eslint
なお、設定ファイルが存在しない場合でも、"設定" があればこのエラーは表示されません。
例:
$ eslint . --rule semi:error
$ eslint . --config airbnb
$ eslint . --no-eslintrc
#6021, #6403, #6550: eslint:recommended
プリセットが更新された
- no-native-reassign ルールが追加されました。
- no-unsafe-finally ルールが追加されました。
- require-yield ルールが追加されました。
- comma-dangle ルールが削除されました。
-
complexity ルールのオプションが
11
から20
へ変更されました。
ES3 環境では末尾カンマが無効な構文なので、eslint:recommended
に comma-dangle ルールが入っていました。しかし、もはや必要なくなったと判断されたため削除されました。これに伴い、comma-dangle ルールは「エラーを防ぐルール」カテゴリから「スタイル ルール」カテゴリへ移動されました。
complexity ルールのオプション変更については、以前の「"eslint:recommended" がルール本来の振る舞いを変更しないようになった」修正から漏れてしまっていたのを改めて修正したものです。深い意図はありません。
#6302: CLIEngine#executeOnText()
API の挙動が変更された
この API は、文字列を渡して静的検証を行う公開メソッドです。
オプションとして文字列のもととなったファイルへのパスを渡すことができます。
従来は .eslintignore
ファイルなどで「無視するファイル」を設定してあったとしても、CLIEngine#executeOnText()
はオプションとして渡されたファイルパスが無視すべきファイルかどうかをチェックしませんでした。無視すべきファイルかどうかチェックするのは CLIEngine#executeOnFiles()
の方です。
しかし、Gulp
等のタスク ランナーから利用するのに不便とのことで、CLIEngine#executeOnText()
でもオプションとして渡されたファイルパスが無視すべきファイルかどうかをチェックするようになりました。
オプションが追加されたルール
#6259: indent
outerIIFEBody
オプションが追加されました。
このオプションを利用すると、一番外側の即時関数はインデントなしにできます。
jQuery のスタイルガイド等がそうなっているらしいです。
/*eslint indent: ["error", 4, {"outerIIFEBody": 0}]*/
// ✔ GOOD
(function() {
function foo(x) {
return x + 1;
}
})();
// ✘ BAD
(function() {
function foo(x) {
return x + 1;
}
})();
新たに 2 つのルールが eslint --fix
をサポートした
- #6448: prefer-const - (ただし単一の変数宣言のみ)