LoginSignup
12
14

More than 5 years have passed since last update.

ESLint v3.3.0

Last updated at Posted at 2016-08-14

v3.2.0 | 次 v3.4.0

ESLint 3.3.0 がリリースされました。
小さな機能追加といくつかのバグ修正が行われています。また、いくつかのルールが非推奨に指定されました。これらの非推奨ルールは将来的 (1年後くらい) に削除されることになります。

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


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

#2716: no-negated-in-lhs

in演算子の左辺に NOT 演算子を書く (例: !"a" in b) と警告するルールでした。
今回instanceof演算子に関しても警告するようになったので、no-unsafe-negation に改名されました。

#6080: no-spaced-func

関数呼び出しの(の前の空白文字を警告するルールでした。
今回(の前に空白文字を強制するオプションが追加されたので、func-call-spacing に改名されました。

#6586: no-native-reassign

最初はObject等のビルトイン変数への代入を警告するルールでした。
v1.0.0から設定ファイルで指定した読み取り専用のグローバル変数への代入を警告するルールに変更されていて、ルール名とルールの実態が離れていたので、no-global-assign に改名されました。

:bulb: 新しいルール

#2716: no-unsafe-negation

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

意図しない NOT 演算子を警告するルールです。
no-negated-in-lhs ルールを置き換えました。

/*eslint no-unsafe-negation: error*/

// ✔ GOOD
!("a" in b);
!(obj instanceof Ctor);
(!"a") in b;
(!obj) instanceof Ctor;

// ✘ BAD
!"a" in b;
!obj instanceof Ctor;

#6076: sort-keys

JSCS JSCS 互換ルールです。

オブジェクトのプロパティを、プロパティ名のアルファベット順に並べることを強制するルールです。
大文字・小文字の違いを無視するオプション、自然順序(1211)に並べるオプションがあります。

例(asc)
/*eslint sort-keys: [error, asc]*/

// ✔ GOOD
var obj = {
    a: 1,
    b: 2,
    c: 3,
}

// ✘ BAD
var obj = {
    a: 1,
    c: 3,
    b: 2,
}

3.3.0では Destructuring があるとクラッシュするバグがあります。3.3.1にて修正されました。

#6080: func-call-spacing

JSCS JSCS 互換ルールです。:pencil: eslint --fixをサポートしています。

関数呼び出しの(の前の空白文字を矯正するルールです。
空白を禁止するオプションと、空白を強制するオプションがあります。
デフォルトでは空白を禁止します。
no-spaced-func ルールを置き換えました。

例(never)
/*eslint func-call-spacing: error*/

// ✔ GOOD
foo()

// ✘ BAD
foo ()
foo
()
例(always)
/*eslint func-call-spacing: [error, always]*/

// ✔ GOOD
foo ()

// ✘ BAD
foo()
foo
()

#6186: no-template-curly-in-string

通常の文字列の中に、テンプレート リテラルの埋め込み式を核と警告するルールです。

/*eslint no-template-curly-in-string: error*/

// ✔ GOOD
`hello, ${world}!`

// ✘ BAD
'hello, ${world}!'

#6586: no-global-assign

読み取り専用のグローバル変数への代入を警告するルールです。

.eslintrc.json
{
    "globals": {
        "foo": false, // 読み取り専用
        "bar": true   // 書き変え可能
    }
}
/*eslint no-global-assign: error*/

// ✔ GOOD
bar = 1

// ✘ BAD
Object = 1
undefined = 1
NaN = 1
foo = 1

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

#5187: new-cap

大文字で始まる変数・プロパティへの関数呼び出し、および小文字で始まる変数・プロパティへのnew呼び出しを警告するルールです。今回、例外的に許可するパターンを正規表現で指定できるようになりました。

/*eslint new-cap: [error, {capIsNewExceptionPattern: "^components\.[A-Z]"}]*/

// ✔ GOOD
components.Foo()
new Foo()

// ✘ BAD
Foo()

#5438: object-shorthand

オブジェクト リテラルの省略記法について、リテラル全体で統一するためのオプションが追加されました。

  • consistent ... 通常記法と省略記法がまざっていたら警告する
  • consistent-as-needed ... 上記に加えて、すべて省略記法にできる場合は、通常記法を警告する
例(consistent)
/*eslint object-shorthand: [error, consistent]*/

// ✔ GOOD
var obj = {a, b}
var obj = {a: a, b: b}

// ✘ BAD
var obj = {a: 1, b}
var obj = {a, b: 2}
例(consistent-as-needed)
/*eslint object-shorthand: [error, consistent-as-needed]*/

// ✔ GOOD
var obj = {a, b}

// ✘ BAD
var obj = {a: a, b: b}
var obj = {a: 1, b}
var obj = {a, b: 2}

#6543: eqeqeq

nullとの比較について、==を強制するオプションが追加されました。

/*eslint eqeqeq: [error, always, {null: never}]*/

// ✔ GOOD
a === 1
a == null

// ✘ BAD
a == 1
a === null

#6557: arrow-parens

アロー関数式の Body 部がブロックである時、常に引数部にカッコを必要とするオプションが追加されました。
AirBnB スタイルガイドがそのようになっているらしいです。

/*eslint arrow-parens: [error, as-needed, {requireForBlockBody: true}]*/

// ✔ GOOD
a => a;
(a) => { return a };

// ✘ BAD
a => { return a };
(a) => a;

#6718: no-self-assign

プロパティに関する自己代入を警告するオプションが追加されました。

/*eslint no-self-assign: [error, {props: true}]*/

// ✔ GOOD
obj.a = obj.b

// ✘ BAD
obj.a = obj.a
12
14
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
12
14