search
LoginSignup
13

More than 5 years have passed since last update.

posted at

updated at

ESLint v2.12.0

v2.11.0 | 次 v2.13.0

いくつかのバグ修正・ルール追加・機能改善が行われました。
JSCS からのルール移植を実施中です。進捗は GitHub の JSCS Compatibility マイルストーンを参照してください。

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

URI
日本語 Issue 管理リポジトリ https://github.com/eslint/eslint-jp
日本語チャット https://gitter.im/eslint/eslint-jp
本家 Issue 管理リポジトリ https://github.com/eslint/eslint
本家チャット https://gitter.im/eslint/eslint

:sparkles: ツール本体の改善

#5679: 多数のファイルを Linting するときの性能が改善された

これは、先日の Google I/O で行われた 性能改善ツールの実演 (YouTube) で送られた Pull Request を元に行われた改善です。

Thanks Google!

#6240: eslint:all が追加された

これは、全ルールを ON にする組込み共有設定です。

{
    "extends": "eslint:all"
}

新しいルールが追加される度に追加されたルールも自動的に ON になるため、"eslint:all" を利用すると minor リリースの度に CI ビルドが壊れてしまうかもしれません。そのためこの提案は棄却されていたのですが、要望が多かったために追加された次第です。
注意してご利用ください。

#6244: Semantic Versioning ポリシーが明記された

ESLint は Semantic Versioning に従っています。
ただ、具体的にどのような場合に major, minor, patch バージョンを上げるのか明記されていませんでした。JSCS から参加したメンバーがこれに気づき、ドキュメント化された次第です。

Semantic Versioning Policy

  • Patch リリース
    • 各ルールのバグ修正 (警告を減らす方向への修正)
    • ツール本体のバグ修正
    • ドキュメントの改善
    • 内部的な変更 (リファクタリングやテストの改善など)
    • リリース失敗時の再リリース
  • Minor リリース
    • 各ルールのバグ修正 (警告を増やす方向への修正)
    • 新ルールの追加
    • 新オプションの追加
    • 新 CLI オプションの追加
    • 新 Node API の追加
    • 新フォーマッターの追加
    • 既存ルールの非推奨化
  • Major リリース
    • eslint:recommended の更新
    • 既存ルールの削除
    • 既存フォーマッターの削除
    • 公開 API の非互換な変更

:bulb: 新しいルール

#5391: rest-spread-spacing

:pencil: eslint --fix をサポートしています。

Spread 演算子と Rest 演算子の空白を矯正するスタイルルールです。

/*eslint rest-spread-spacing: error*/

// ✔ GOOD
let list = [1, 2, ...spread]
foo(...spread)

let [head, ...rest] = list;
function bar(head, ...rest) {
}

// ✘ BAD
let list = [1, 2, ... spread]
foo(...  spread)

let [head, ...  rest] = list;
function bar(head, ... rest) {
}

#6023: no-mixed-operators

ひとつの式の中で、特定の演算子を括弧なしで混ぜて使うことを禁止するスタイルルールです。
例えば次のように設定すると、||&&を混ぜて使うと警告します。

/*eslint no-mixed-operators: [error, {groups: [[||, &&]]}]*/

// ✔ GOOD
let foo = (a > 0 && b > 0) || c > 0
let foo = a > 0 && (b > 0 || c > 0)

// ✘ BAD
let foo = a > 0 && b > 0 || c > 0

#6072: object-curly-newline

:pencil: eslint --fix をサポートしています。

オブジェクト リテラルのカッコの内側に改行を書くべきかどうかを矯正するスタイルルールです。
デフォルトでは中身が複数行だった場合に改行を必要とします。

/*eslint object-curly-newline: error*/

// ✔ GOOD
let a = {};
let b = {foo: 1};
let c = {foo: 1, bar: 2};
let d = {
    foo: 1,
    bar: 2
};
let e = {
    foo: function() {
        dosomething();
    }
};

// ✘ BAD
let a = {
};
let b = {
    foo: 1
};
let c = {
    foo: 1, bar: 2
};
let d = {foo: 1,
    bar: 2};
let e = {foo: function() {
    dosomething();
}};

#6078: max-lines

いちファイルの行数が指定以上になると警告するスタイルルールです。

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

#5936: arrow-body-style

オブジェクト リテラルを返すだけの Arrow 関数にて、return文を使わなければ警告するオプションです。
オブジェクト リテラルを省略形式で書くと、括弧が必要となり不格好なので避けたいという動機があります。オブジェクト リテラルとブロックが両方に { で始まるという構文上の悲劇ですね。

/*eslint arrow-body-style: [error, as-needed, {requireReturnForObjectLiteral: true}]*/

// ✔ GOOD
let foo = (x) => {
    return {value: x}
}

// ✘ BAD
let foo = (x) => ({value: x})

#6317: arrow-body-style

Arrow 関数にてブロックを利用すると警告するオプションです。
ブロックが必要な場合は普通の関数式を使おうというスタイルですね。

/*eslint arrow-body-style: [error, never]*/

// ✔ GOOD
let foo = (x) => x + 1
let foo = function(x) {
    let y = bar(x)
    return x + y
}

// ✘ BAD
let foo = (x) => {
    let y = bar(x)
    return x + y
}

... prefer-arrow-callback に衝突回避オプションを追加する要望が来そう

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
13