Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@mysticatea

ESLint v3.9.0

More than 3 years have passed since last update.

v3.8.0 | 次 v3.10.0

ESLint 3.9.0 がリリースされました。
いくつかの機能追加・バグ修正が行われています。

今回、1つのルールが非推奨になりました。

1年後くらいに削除される予定になっていますので、ご注意ください。

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


:sparkles: 本体への機能追加

#6974: 構文解析器プラグインがparserServicesオブジェクトを公開できるようになった

Undocumented. (なんでだろう...)

構文解析器プラグインは、検証ルールが構文解析器の高度な機能を利用するためのブリッジを定義できるようになりました。
例えば、TypeScript 構文解析器プラグインはこれを利用して型に関する検証器を提供します。

:bulb: 新しいルール

#7309: no-useless-return

:pencil: 自動修正をサポートしています。

安全に削除できる (冗長な) return 文を禁止するルールです。

/*eslint no-useless-return: error */

//✔ GOOD
function foo1() {
    if (a) {
        return
    }
    doSomething();
}

function foo2() {
    return "bar"
}

//✘ BAD
function foo1() {
    if (a) {
        doSomething();
        return
    }
}
function foo2() {
    if (a) {
        doSomething();
    }
    return
}
function foo3() {
    return
}

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

#3229: max-len

正規表現が書かれている行を無視するオプションが追加されました。

/*eslint max-len: [error, 10, {ignoreRegExpLiterals: true}] */

//✔ GOOD
let a = /this is a long regular expression/

//✘ BAD
let b = "this is a long string literal"

#5946: indent

JSCS JSCS 互換オプションです。

関数呼び出しの引数リストに関するインデントを、最初の引数の位置に揃えられるようになりました。

/*eslint indent: [error, 4, {CallExpression: {parameters: "first"}}] */

//✔ GOOD
doSomething(foo,
            bar,
            baz)

//✘ BAD
doSomething(foo,
    bar,
    baz)

#7391: func-name-matching

関数式の名前が代入先の変数・プロパティの名前と一致させないためのオプションが追加されました。
より説明的な名前にすべし、という意図のようです。

/*eslint func-name-matching: [error, never] */

//✔ GOOD
let foo = function details() {
}

//✘ BAD
let foo = function foo() {
}

:pencil: 新たに eslint --fix をサポートしたルール

#5959: newline-after-var

変数宣言の後の空行を自動修正できるようになりました。

let foo = 1
doSomething(foo)
// ↓
let foo = 1

doSomething(foo)

#7074: brace-style

開き括弧やif-else等のキーワードの位置を自動修正できるようになりました。

if (a) {
    doSomething()
}
else {
    doSomethingElse()
}
// ↓
if (a) {
    doSomething()
} else {
    doSomethingElse()
}

#7240: arrow-body-style

アロー関数のブロックの有無を自動修正できるようになりました。

let foo = (a, b) => {
    return a + b
}
// ↓
let foo = (a, b) => a + b

:warning: 非推奨になったルール

#7226: prefer-reflect

Refrectクラスのメソッドで代用できる言語機能を使うと警告するルールでした。
例えば、delete obj.fooと書くと、Reflect.deletePropertyを使えと言われます。

しかしながら、言語機能とReflectクラスのメソッドでは微妙に挙動が異なる場合が多く、このルールは適切ではないと判断されました。
この警告が必要な場合はカスタムルール or プラグインを作成してください。

:art: 新しいフォーマッター

#5860: codeframe

JSCS JSCS 互換です。

警告周辺のソースコードを表示してくれるフォーマッターです。JSCSから輸入されました。
一覧性は低下しますが、解りやすいですね。

An Example

3
Help us understand the problem. What is going on with this article?
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
mysticatea
ESLint のメンテナ。Vue.js の開発チームメンバー。JavaScript 言語仕様書 ECMA-262 や JavaScript 構文解析器 Acorn のコントリビューター。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?