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

ESLint v4.1.0

More than 3 years have passed since last update.

v4.0.0 | 次 v4.2.0

ESLint 4.1.0 がリリースされました。
長いことペンディングしていた機能追加 PR がマージされたり、インデント周りのバグ修正が多めです。

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

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

🚀 本体への機能追加

#3611: Glob-based configuration!!

.eslintrc.*ファイル内で、指定した Glob にマッチするファイルの設定のみ変更できるようになりました。例えば、**/*.spec.jsにテスト用のルールを追加することができます。

この機能を利用するには、以下のようにoverridesプロパティを利用します。詳細はこちら🇺🇸

.eslintrc.json
{
    "rules": {
        //...
    },
    "overrides": [
        {
            "files": ["**/*.spec.js"],
            "env": { mocha: true }
        }
    ]
}

#7348: 各ルールのfix()関数が複数のfixオブジェクトを返せるようになった

自動修正をサポートする検証ルールを作る場合、fix()関数を実装します。
このとき、fix()関数はfixオブジェクトを1つだけしか返せませんでした。v4.1.0から、複数のfixオブジェクトを返すことができるようになります。

例えば、あるノードを囲むカッコを削除するfix()関数は次のように変化します。

Before
context.report({
    node,
    message: "Unexpected parenthesized expression.",

    fix(fixer) {
        const openParen  = sourceCode.getTokenBefore(node, t => t.value === "(")
        const closeParen = sourceCode.getTokenAfter(node, t => t.value === ")")

        // インラインコメントを消さないために sourceCode.getText(node) を使えない。
        // カッコを削除したいだけだが、削除しないものに注目したコードになっている。
        const code = sourceCode.text.slice(openParen.range[1], closeParen.range[0])
        return fixer.replaceTextRange([openParen.range[0], closeParen.range[1]], code)
    }
})
After
context.report({
    node,
    message: "Unexpected parenthesized expression.",

    *fix(fixer) {
        const openParen  = sourceCode.getTokenBefore(node, t => t.value === "(")
        const closeParen = sourceCode.getTokenAfter(node, t => t.value === ")")

        // カッコを削除したいだけなので、カッコを削除する。
        yield fixer.remove(openParen)
        yield fixer.remove(closeParen)
    }
})

すっきり。

#8458: .eslintignoreファイルの内容をpackage.jsonに書けるようになった

.eslintignoreファイルは、無視するファイルを改行区切りの Glob で書くことができるファイルです。デフォルト (該当ファイルがない場合) ではnode_modules等が無視されるようになっています。この設定を (.eslintignoreファイルを作る代わりに) package.jsonファイルに含めることができるようになりました。

この機能を利用するには、以下のようにeslintIgnoreプロパティを利用します。

package.json
{
    "name": "...",
    "version": "...",
    //...
    "eslintConfig": {
        //...
    },
    "eslintIgnore": [
        "node_modules",
        "build/**/*.js",
        "dist/**/*.js"
    ]
}

#8631: Linterクラスに自動修正メソッドを追加した

ESLint の JavaScript API は主に2つのクラスで構成されています。

  • Linter ... 与えられたテキストと設定を使って Lint する。
  • CLIEngine ... Globs から対象ファイルと設定ファイルを検索して共有設定やプラグインの解決と読み込みを行い、Linter を呼び出す。

主に使われるのはCLIEngineです。
Linterはブラウザ内で使えるようにファイルシステムに依存しない処理だけを受け持っています。

今までは自動修正に関する全てのコードはCLIEngineに実装されていましたが、今回の修正で一部Linterに移動されました。オンライン デモで自動修正したいですからね。

image.png

💡 新しいルール

今回はありません。

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

#6196: no-extra-parens enforceForArrowConditionals

[no-confusing-arrow]ルールとの競合を避けるためのオプションです。
アロー関数の本文を囲むカッコを許可します。

/* eslint no-extra-parens: [error, all, { enforceForArrowConditionals: false }] */

//✔ GOOD
const b = a => 1 ? 2 : 3;
const d = c => (1 ? 2 : 3); //< このオプション無しだと警告されます

#8061: no-trailing-spaces ignoreComments

コメント内の末尾スペースを無視するオプションです。
ドキュメント ジェネレータで、コメントを Markdown として解釈している場合などに便利でしょう。

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

今回はありません。


mysticatea
ESLint のメンテナ。Vue.js の開発チームメンバー。JavaScript 言語仕様書 ECMA-262 や JavaScript 構文解析器 Acorn のコントリビューター。
Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした