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

ESLint v2.5.0

More than 3 years have passed since last update.

v2.4.0 | 次 v2.6.0

記念すべき100回目のリリースです。
機能追加とバグ修正が行われました。

  • 3つのルールと、2つのオプションが追加されました。
  • bundledDependencies を導入しました。

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

#5013: bundledDependencies を利用するようになった

  • EDIT: 残念ながら bundledDependencies はいろいろな問題が報告されたため、v2.5.3 で一旦 Revert されました。伴ってこの Issue #5013 は Reopen されました。対策検討中です。

先日の騒動1を受けて、依存するパッケージが突然削除されても ESLint 利用者が困らないようにするために、bundledDependencies を導入しました。この変更により、ESLint は依存している npm パッケージ群をすべて含む状態でパッケージ化されます。ESLint が依存しているパッケージのいくつかに突然アクセスできなくなったとしても、利用者は ESLint を正常にインストールして実行することができるでしょう。

ところで、Firefox (Phoenix → Firebird → Firefox) や Jenkins (Hudson → Jenkins) のような前例があるように、オープンソースであろうとも商標問題とは無縁ではいられません。先にあった騒動では、npm は妥当な判断をしたものと考えています。GitHub を去ることを検討して騒がれた ESLint ですが、npm から去る予定はありません。

#5522: OpenSSLを無効化したビルドの Node.js で実行可能になった

ESLint はキャッシュ処理で MD5 ハッシュを計算するために crypto モジュールに依存していました。
標準の Node.js であれば問題ありませんが、OpenSSL を無効化したビルドの Node.js では件のモジュールは利用できません。
そこで、より効率的なハッシュ計算を行うモジュールに置き換えました。

新しいルール

#3478: no-duplicate-imports

重複する import 文を警告するルールです。

/*eslint no-duplicate-imports: "error"*/

import {readFile} from "fs";
import {writeFile} from "fs"; /*error 'fs' import is duplicated.*/

このような import 文は1つにまとめることができます。

/*eslint no-duplicate-imports: "error"*/

import {readFile, writeFile} from "fs";

#5424: max-statements-per-line

1行に書くことができる文の数を制限するルールです。
例えば、最大1個に制限すると、次のようなコードが警告されます。

/*eslint max-statements-per-line: "error"*/

var bar; var baz;    /*error This line has too many statements. Maximum allowed is 1.*/

#5460: no-useless-escape

文字列リテラルと正規表現リテラルの中にある、不必要なエスケープ シーケンスを警告するルールです。

/*eslint no-useless-escape: "error"*/

let foo = "th\is is a pen";    /*error Unnecessary escape character: \i*/
let pattern = /(a\@b)/;        /*error Unnecessary escape character: \@*/

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

#3837: no-unused-vars

catch句の例外変数が未使用の場合に警告するためのオプションが追加されました。
今まで、何故か無視されていたんですよね。

/*eslint no-unused-vars: ["error", {caughtErrors: "all"}]*/

try {
    doSomething();
} catch (err) {    /*error 'err' is defined but never used*/
    // ignore
}

#5060: space-unary-ops

単項演算子とオペランドの間のスペースを矯正するルールです。
これまでも英単語の演算子(delete等)と記号の演算子(+等)を個別に設定できましたが、このバージョンから演算子毎に個別に設定を変えることができるようになりました。

例えば、以下のように ! の後にスペースを強制することができます。

/*eslint space-unary-ops: ["error", {overrides: {"++": false, "!": true}}]*/

++foo;
!bar;    /*error Unary operator '!' must be followed by whitespace.*/

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