ESLint v3.3.0 released: https://t.co/F87gDj31Cu
— ESLint (@geteslint) 2016年8月12日
ESLint 3.3.0 がリリースされました。
小さな機能追加といくつかのバグ修正が行われています。また、いくつかのルールが非推奨に指定されました。これらの非推奨ルールは将来的 (1年後くらい) に削除されることになります。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
非推奨になったルール
#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 に改名されました。
新しいルール
#2716: no-unsafe-negation
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
オブジェクトのプロパティを、プロパティ名のアルファベット順に並べることを強制するルールです。
大文字・小文字の違いを無視するオプション、自然順序(1
→2
→11
)に並べるオプションがあります。
/*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 互換ルールです。 eslint --fix
をサポートしています。
関数呼び出しの(
の前の空白文字を矯正するルールです。
空白を禁止するオプションと、空白を強制するオプションがあります。
デフォルトでは空白を禁止します。
no-spaced-func ルールを置き換えました。
/*eslint func-call-spacing: error*/
// ✔ GOOD
foo()
// ✘ BAD
foo ()
foo
()
/*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
読み取り専用のグローバル変数への代入を警告するルールです。
{
"globals": {
"foo": false, // 読み取り専用
"bar": true // 書き変え可能
}
}
/*eslint no-global-assign: error*/
// ✔ GOOD
bar = 1
// ✘ BAD
Object = 1
undefined = 1
NaN = 1
foo = 1
オプションが追加されたルール
#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
... 上記に加えて、すべて省略記法にできる場合は、通常記法を警告する
/*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}
/*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