前 v6.6.0 | 次 (2019/12/21 JST)
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:recommendedrules: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 *///✘ BADconstobj1={getvalue(){},foo(){},setvalue(v){},}//✔ GOODconstobj2={getvalue(){},setvalue(v){},foo(){},}
no-setter-return
🔖 #12346
Setter に値を返すreturn
文を書くと警告するルールです。getter-returnルールの兄弟です。
/* eslint no-setter-return: error *///✘ BADconstobj1={setvalue(v){returnthis._value},}//✔ GOODconstobj2={setvalue(v){if(v==null)returnthis._value=v},}
prefer-exponentiation-operator
🔖 #12360
Math.pow()
関数の代わりに**
演算子を使うように指示するルールです。
/* eslint prefer-exponentiation-operator: error *///✘ BADconstb1=Math.pow(2,8);constb2=Math.pow(a,b);constb3=Math.pow(a+b,c+d);constb4=Math.pow(-1,n);//✔ GOODconsta1=2**8;consta2=a**b;consta3=(a+b)**(c+d);consta4=(-1)**n;
no-dupe-else-if
🔖 #12504
else-if
文の連鎖の中で、重複する条件式のために常にfalse
になるif
文を警告するルールです。
/* eslint no-dupe-else-if: error *///✘ BADif(a||b){//...}elseif(a){//...}//✔ GOODif(a||b){//...}elseif(c){//...}
no-constructor-return
🔖 #12529
コンストラクタの中でreturn
文で値を返すことを禁止するルールです。
/* eslint no-constructor-return: error *///✘ BADclassB{constructor(){return{}}}//✔ GOODclassA{constructor(arg){if(arg==null)returnthis.value=arg}}
🔧 オプションが追加されたルール
no-underscore-dangleallowAfterThisConstructor
🔖 #11489
this.constructor
に続くアンダーバーを許可するオプションが追加されました。
/* eslint no-underscore-dangle: [error, { allowAfterThisConstructor: true }] *///✘ BADclassB{foo(obj){obj.constructor._privateStuff}}//✔ GOODclassA{foo(obj){this.constructor._privateStuff}}
no-implicit-globalslexicalBindings
🔖 #11996
レキシカル スコープの宣言 class
, const
, let
も警告するルールが追加されました。
/* eslint no-implicit-globals: [error, { lexicalBindings: true }] *///✘ BADclassB{}constb1=0letb2=0//✔ GOOD{classA{}consta1=0leta2=0}
no-useless-computed-keyenforceForClassMembers
🔖 #12110
クラス構文の不要な Computed Keys も警告するオプションが追加されました。
/* eslint no-useless-computed-key: [error, { enforceForClassMembers: true }] *///✘ BADclassB{["foo"](){}}//✔ GOODclassA{[foo](){}}
no-invalid-thiscapIsConstructor
🔖 #12308
ES5 スタイルのコンストラクタ (名前が大文字で始まる関数) をコンストラクタとして扱わないオプションが追加されました。React では関数コンポーネントに大文字で始まる関数名を使う習慣があるためです。
/* eslint no-invalid-this: [error, { capIsConstructor: false }] *///✘ BADfunctionFoo(){this.value=0}
✒️ eslint --fix
をサポートしたルール
特になし。
⚠️ 非推奨になったルール
特になし。