ESLint v6.7.0 has been released:https://t.co/GB8fHji3dq
— ESLint (@geteslint) November 22, 2019
ESLint 6.7.0
がリリースされました。
小さな機能追加とバグ修正が行われています。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
🚀 本体への機能追加
設定ファイルのignorePatterns
プロパティ
共有設定を含む設定ファイルで、ignorePatterns
プロパティが利用できるようになりました。このプロパティは.eslintignore
と同様に ESLint が無視するファイルをコントロールできます。
ignorePatterns:
- "!.eslintrc.js"
- "/node_modules/"
- "**/node_modules/"
extends:
- eslint:recommended
rules:
quotes: error
#...
Suggestions API
あるエラーが複数の修正候補を持つ場合、ESLint は自動修正を行えず、修正候補を提示する手段もありませんでした。新しい Suggestions API を使うと、エディタの ESLint プラグイン等のインタラクティブな UI を通して修正候補を提示できるようになります。
今のところ、ユーザーはまだこの機能を利用できません。各検証ルールとエディタ プラグインのサポートをお待ちください。
【非推奨】個人設定ファイル
ESLint が実行されたディレクトリに設定ファイル (.eslintrc.*
) が存在しなかった場合、ESLint は OS のホーム ディレクトリにある設定ファイルを読み込みます。この機能を個人設定ファイルと呼びます。
この機能が非推奨になりました。
- ESLint 7 以降、この機能を利用すると実行時警告が出力されるようになります。
- ESLint 8 でこの機能は削除されます。
今後もホームディレクトリの設定ファイルを利用したい場合は、CLI オプションで明示的に指定してください。
eslint --config ~/.eslintrc.json lib
【非推奨】sourceCode#isSpaceBetweenTokens()
🔖 #12519
sourceCode#isSpaceBetweenTokens()
メソッドが名前変更されました。新しい名前はsourceCode#isSpaceBetween()
になります。
トークンだけでなく AST ノードを渡しても動作するので、単純に名前が間違っていたという理由です。元の名前のメソッドは非推奨メソッドとして残され、将来のメジャーリリースで削除されます (具体的な削除プランは示されていません)。
💡 新しいルール
grouped-accessor-pairs
🔖 #12331
Getter と Setter のペアを離れた場所に定義すると警告するルールです。
/* eslint grouped-accessor-pairs: error */
//✘ BAD
const obj1 = {
get value() { },
foo() { },
set value(v) { },
}
//✔ GOOD
const obj2 = {
get value() { },
set value(v) { },
foo() { },
}
no-setter-return
🔖 #12346
Setter に値を返すreturn
文を書くと警告するルールです。getter-return ルールの兄弟です。
/* eslint no-setter-return: error */
//✘ BAD
const obj1 = {
set value(v) {
return this._value
},
}
//✔ GOOD
const obj2 = {
set value(v) {
if (v == null) return
this._value = v
},
}
prefer-exponentiation-operator
🔖 #12360
Math.pow()
関数の代わりに**
演算子を使うように指示するルールです。
/* eslint prefer-exponentiation-operator: error */
//✘ BAD
const b1 = Math.pow(2, 8);
const b2 = Math.pow(a, b);
const b3 = Math.pow(a + b, c + d);
const b4 = Math.pow(-1, n);
//✔ GOOD
const a1 = 2 ** 8;
const a2 = a ** b;
const a3 = (a + b) ** (c + d);
const a4 = (-1) ** n;
no-dupe-else-if
🔖 #12504
else-if
文の連鎖の中で、重複する条件式のために常にfalse
になるif
文を警告するルールです。
/* eslint no-dupe-else-if: error */
//✘ BAD
if (a || b) {
//...
} else if (a) {
//...
}
//✔ GOOD
if (a || b) {
//...
} else if (c) {
//...
}
no-constructor-return
🔖 #12529
コンストラクタの中でreturn
文で値を返すことを禁止するルールです。
/* eslint no-constructor-return: error */
//✘ BAD
class B {
constructor() {
return {}
}
}
//✔ GOOD
class A {
constructor(arg) {
if (arg == null) return
this.value = arg
}
}
🔧 オプションが追加されたルール
no-underscore-dangle allowAfterThisConstructor
🔖 #11489
this.constructor
に続くアンダーバーを許可するオプションが追加されました。
/* eslint no-underscore-dangle: [error, { allowAfterThisConstructor: true }] */
//✘ BAD
class B {
foo(obj) {
obj.constructor._privateStuff
}
}
//✔ GOOD
class A {
foo(obj) {
this.constructor._privateStuff
}
}
no-implicit-globals lexicalBindings
🔖 #11996
レキシカル スコープの宣言 class
, const
, let
も警告するルールが追加されました。
/* eslint no-implicit-globals: [error, { lexicalBindings: true }] */
//✘ BAD
class B {}
const b1 = 0
let b2 = 0
//✔ GOOD
{
class A {}
const a1 = 0
let a2 = 0
}
no-useless-computed-key enforceForClassMembers
🔖 #12110
クラス構文の不要な Computed Keys も警告するオプションが追加されました。
/* eslint no-useless-computed-key: [error, { enforceForClassMembers: true }] */
//✘ BAD
class B {
["foo"]() { }
}
//✔ GOOD
class A {
[foo]() { }
}
no-invalid-this capIsConstructor
🔖 #12308
ES5 スタイルのコンストラクタ (名前が大文字で始まる関数) をコンストラクタとして扱わないオプションが追加されました。React では関数コンポーネントに大文字で始まる関数名を使う習慣があるためです。
/* eslint no-invalid-this: [error, { capIsConstructor: false }] */
//✘ BAD
function Foo() {
this.value = 0
}
✒️ eslint --fix
をサポートしたルール
特になし。
⚠️ 非推奨になったルール
特になし。