LoginSignup
3
2

More than 5 years have passed since last update.

ESLint v4.12.0

Last updated at Posted at 2017-11-27

v4.11.0 | 次 v4.13.0

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

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

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

🚀 本体への機能追加

#9321: Linter.prototype.defineParser が追加された

ツール開発者向け。

Node.js API の Linter クラスに defineParser メソッドが追加されました。

const eslint = require("eslint")
const linter = new eslint.Linter()

linter.defineParser("my-custom-parser", {
    parse(text, options) {
        // text を解析して AST を作成する
    }
})

linter.verify(text, {
    // 設定で定義されたパーサーを指定できる
    parser: "my-custom-parser",
    rules: { /* ... */ }
})

今までは Linter 内部で動的 require してパーサーを読み込んでいましたが、今後は defineParser メソッドで独自のパーサーを定義できます。定義されていなかった場合は、今まで通り動的 require します。

💡 新しいルール

#9629: implicit-arrow-linebreak

Arrow 関数の非ブロックの本体をどこに書くかを矯正するスタイル ルールです。
"beside"=> の右側に、"below" で下側に書くよう警告します。

例(beside)
/* eslint implicit-arrow-linebreak: [error, beside] */

//✓ GOOD
(foo) => bar;
(foo) => (bar);
(foo) => (
  bar()
);

//✘ BAD
(foo) =>
  bar;
(foo) =>
  (bar);
(foo) =>
(
  bar()
);

デモを開く

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

#9506: no-restricted-imports importNames

指定したパッケージの特定のメンバーだけを利用禁止にするオプションが追加されました。
importNames が未指定の場合は、今まで通りパッケージ全体が禁止されます。

/* eslint no-restricted-imports: [error, {name: foo, importNames: [Foo]}] */

//✓ GOOD
import {bar} from "foo";

//✘ BAD
import {Foo} from "foo";

デモを開く

#9594: semi beforeStatementContinuationChars

次の行が ASI ハザードが起こり得る文字で始まり、かつ ASI ハザードが起こらない場合のセミコロンの有無を矯正するためのオプションが追加されました。

ASI ハザードが起こり得る文字には [( 等があります。
一方で行がこれらの文字で始まっていたとしても、前の文が do-whileimport 等であった場合は ASI ハザードが発生しません。

このような場合、今まではセミコロンがあっても無くても警告していませんでした。

/* eslint semi: [error, never, {beforeStatementContinuationChars: always}] */

//✓ GOOD
do {/* 略 */} while (a)
;[1, 2, 3].forEach(doSomething)

//✘ BAD
do {/* 略 */} while (a)
[1, 2, 3].forEach(doSomething)

デモを開く

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

#9496: sort-vars (partial)

/* eslint sort-vars: error */

var a = 1,
    c = 2,
    b = 3

// Gets fixed to:

var a = 1,
    b = 3,
    c = 2

※ 初期値に変数がある場合は自動修正されません。


3
2
0

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
  3. You can use dark theme
What you can do with signing up
3
2