ESLint v6.6.0 has been released: https://t.co/oHo5t86A0k
— ESLint (@geteslint) October 25, 2019
ESLint 6.6.0
がリリースされました。
小さな機能追加とバグ修正が行われています。
これまで ESLint は隔週リリースを行ってきましたが、アクティブなメンテナが減少していることから、今後は月間リリースとなります。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
🚀 本体への機能追加
context.getCwd()
各ルールから現在のディレクトリを取得できるようになりました。
module.exports = {
meta: {},
create(context) {
console.log(context.getCwd()) //→ /home/a-user/projects/foo
return {}
},
}
この値は基本的に process.cwd()
と同じですが、いくつかの場合に異なる値になります。
-
CLIEngine
オブジェクトを初期化した後にprocess.chdir()
関数によって CWD を変更した場合 -
CLIEngine
のコンストラクタ オプションとして独自の CWD を指定した場合
また、ブラウザ上で実行している場合など、CWD が不明な場合は undefined
を返します。
💡 新しいルール
特になし。
🔧 オプションが追加されたルール
no-param-reassign ignorePropertyModificationsForRegex
🔖 #11275
指定した正規表現にマッチする名前の引数について、プロパティの変更を許可するオプションが追加されました。
/*eslint no-param-reassign: [error, { props: true, ignorePropertyModificationsForRegex: ["^req"] }]*/
//✘BAD
function f1(req, res) {
res.value = 0
}
//✔GOOD
function f2(req, res) {
req.value = 0
}
use-isnan enforceForIndexOf
🔖 #12379
浮動小数点数の仕様により、NaN
との比較は常にfalse
になります。これを報告するuse-isnan
ルールに、Array#indexOf
メソッドも報告するオプションが追加されました。代わりに、Array#findIndex
メソッドを利用したり、NaN
を特別に処理する新しいメソッドArray#includes
を利用したりしましょう。
/*eslint use-isnan: [error, { enforceForIndexOf: true }]*/
//✘BAD
var indexOfNaN= myArray.indexOf(NaN)
var hasNaN = myArray.indexOf(NaN) >= 0
//✔GOOD
var indexOfNaN = myArray.findIndex(Number.isNaN)
var hasNaN = myArray.includes(NaN)
no-unsafe-negation enforceForOrderingRelations
🔖 #12414
比較演算子の左辺をオペランドとする否定演算子を警告するオプションが追加されました。
/*eslint no-unsafe-negation: [error, { enforceForOrderingRelations: true }] */
//✘BAD
if (! a < b) {}
//✔GOOD
if (!(a < b)) {}
no-extra-parens enforceForNewInMemberExpressions
🔖 #12436
new
式に直接プロパティアクセスを繋げているときに、そのnew
式を囲む括弧を無視するためのオプションが追加されました。
/*eslint no-extra-parens: [error, all, { enforceForNewInMemberExpressions: false }] */
//✔GOOD
var obj = (new Foo()).prop;
✒️ eslint --fix
をサポートしたルール
特になし。
⚠️ 非推奨になったルール
特になし。