Help us understand the problem. What is going on with this article?

ESLint v6.7.0

v6.6.0 | 次 (2019/12/21 JST)

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

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

🏢 日本語 Issue 管理リポジトリ
👫 日本語サポート チャット
🏢 本家リポジトリ
👫 本家サポート チャット

🚀 本体への機能追加

設定ファイルのignorePatternsプロパティ

🔖 RFC022, #12274

共有設定を含む設定ファイルで、ignorePatternsプロパティが利用できるようになりました。このプロパティは.eslintignoreと同様に ESLint が無視するファイルをコントロールできます。

例(.eslintrc.yml)
ignorePatterns:
- "!.eslintrc.js"
- "/node_modules/"
- "**/node_modules/"

extends:
- eslint:recommended

rules:
  quotes: error
  #...

Suggestions API

🔖 RFC030, #12384

あるエラーが複数の修正候補を持つ場合、ESLint は自動修正を行えず、修正候補を提示する手段もありませんでした。新しい Suggestions API を使うと、エディタの ESLint プラグイン等のインタラクティブな UI を通して修正候補を提示できるようになります。

今のところ、ユーザーはまだこの機能を利用できません。各検証ルールとエディタ プラグインのサポートをお待ちください。

【非推奨】個人設定ファイル

🔖 RFC032, #12426

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() { },
}

Online Playground

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
    },
}

Online Playground

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;

Online Playground

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) {
    //...
}

Online Playground

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
    }
}

Online Playground

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

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
    }
}

Online Playground

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
}

Online Playground

no-useless-computed-key enforceForClassMembers

🔖 #12110

クラス構文の不要な Computed Keys も警告するオプションが追加されました。

/* eslint no-useless-computed-key: [error, { enforceForClassMembers: true }] */

//✘ BAD
class B {
    ["foo"]() { }
}

//✔ GOOD
class A {
    [foo]() { }
}

Online Playground

no-invalid-this capIsConstructor

🔖 #12308

ES5 スタイルのコンストラクタ (名前が大文字で始まる関数) をコンストラクタとして扱わないオプションが追加されました。React では関数コンポーネントに大文字で始まる関数名を使う習慣があるためです。

/* eslint no-invalid-this: [error, { capIsConstructor: false }] */

//✘ BAD
function Foo() {
    this.value = 0
}

Online Playground

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

特になし。

⚠️ 非推奨になったルール

特になし。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away