LoginSignup
6

More than 5 years have passed since last update.

ESLint v3.5.0

Last updated at Posted at 2016-09-09

v3.4.0 | 次 v3.6.0

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

現在、ECMAScript® 2017 Draft の対応が進行中です。
async/await と trailing commas in functions 構文について、構文解析器レベルでのサポートが完了し、現在各種ルールのサポート状況を改善しています。たぶん今月中には完了すると思います。

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


:sparkles: ESLint 本体への変更

#5344: 構文解析器へソースコードのファイル名が渡されるようになった

構文解析器プラグインの製作者向けです。

構文解析器プラグインの parse() メソッドの第2引数には parserOptions が渡されますが、この parserOptions オブジェクトに filePath プロパティが追加されました。
このプロパティは、解析中のソースコードのファイルへのパスが格納されています。

これにより、例えば TypeScript の構文解析器プラグインは、このファイルパスを手がかりに別ファイルにある型情報を検索できるようになります。

:bulb: 新しいルール

#3218: no-restricted-properties

指定した名称のプロパティ アクセスを禁止するルールです。
名称だけを手がかりにしている点に注意が必要です。

/*eslint no-restricted-properties: [error,
    {object: _, property: extend},
    {object: describe, property: only},
    {object: foo, property: bar}
]*/

// ✘ BAD

_.extend()
describe.only()
foo.bar

#6068: prefer-numeric-literals

JSCS JSCS 互換ルールです。

parseInt による2進数・8進数・16進数の定数値を警告し、数値リテラルを使うよう促します。

/*eslint prefer-numeric-literals: error*/

// ✔ GOOD
0b111110111
0o767
0x1F7

// ✘ BAD
parseInt("111110111", 2)
parseInt("767", 8)
parseInt("1F7", 16)

あれ? 10進数は...?

#6069: lines-around-directive

JSCS JSCS 互換ルールです。

ディレクティブ プロローグの前後に空白行を入れるかどうかを矯正するスタイル ルールです。
ディレクティブ プロローグとは、"use strict" のような文字列だけの文によって構文解析の振る舞いを変更する JS 独特の構文のことです。

/*eslint lines-around-directive: error*/

// ✔ GOOD
function foo() {
    "use strict"

    doSomething()
}

// ✘ BAD
function foo() {
    "use strict"
    doSomething()
}

#6077: line-comment-position

JSCS JSCS 互換ルールです。

行コメントの位置を矯正するスタイル ルールです。
オプションによって、コードの上に書くか、コードの右に書くかを指定できます。

例(上)
/*eslint line-comment-position: [error, {position: above}]*/

// ✔ GOOD
doSomething()


doSomething() // ✘ BAD
例(右)
/*eslint line-comment-position: [error, {position: beside}]*/

doSomething() // ✔ GOOD

// ✘ BAD
doSomething()

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

#5805: max-len

文字列リテラル・テンプレート リテラルが存在する行を無視するオプションが追加されました。

/*eslint max-len: [error, {code: 5, ignoreStrings: true, ignoreTemplateLiterals: true}]*/

// ✔ GOOD
let a = "long string"
let b = `long template`

// ✘ BAD
doSomething()

#6052: indent

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

関数定義において、引数部のインデントを指定するオプションが追加されました。
最初の引数に合わせる "first" と、固定値によるインデントが指定できます。

例(first)
/*eslint indent: [error, 4, {FunctionDeclaration: {parameters: first, body: 1}}]*/

// ✔ GOOD
function foo(aaa,
             bbb,
             ccc) {
    doSomething()
}

// ✘ BAD
function foo(aaa,
    bbb,
    ccc) {
    doSomething()
}
例(2)
/*eslint indent: [error, 4, {FunctionDeclaration: {parameters: 2, body: 1}}]*/

// ✔ GOOD
function foo(
        aaa,
        bbb,
        ccc) {
    doSomething()
}

// ✘ BAD
function foo(
    aaa,
    bbb,
    ccc) {
    doSomething()
}

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

#5958: newline-before-return

#6941: comma-style

#6994: new-parens

#7002: prefer-arrow-callback

#7013: wrap-regex

#7014: dot-notation

#7056: no-implicit-coercion

#7070: no-floating-decimal

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6