8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESLint v3.10.0

Last updated at Posted at 2016-11-12

v3.9.0 | 次 v3.11.0

ESLint 3.10.0 がリリースされました。
いくつかの機能追加・バグ修正が行われています。

マイナーバージョンが2桁になると、次のメジャーバージョンが近いなぁって思えますね (隔週リリースで6ヶ月間あると12前後まで上がる)。
4.0.0 は年明け早々に出るんじゃないかと思っています。

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


:bulb: 新しいルール

#7537: no-return-await

安全に削除できる (冗長な) await文を禁止するルールです。
async関数では戻り値のPromiseが自動的に unwrap されるため、return文の中でawait式を使う必要はありません。

/*eslint no-useless-return: error */

//✔ GOOD
async function foo() {
    return doSomething()
}
async () => doSomething()

//✘ BAD
async function foo() {
    return await doSomething()
}
async () => await doSomething()

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

#6963: no-restricted-imports and no-restricted-modules

.gitignore と同様のパターン表現で禁止するモジュールを指定できるようになりました。

/*eslint no-restricted-modules: [error, {patterns: ["foo/*"]}] */

//✔ GOOD
const abc = require("abc")
const foo = require("foo")

//✘ BAD
const bar = require("foo/bar")

#7235: func-names

「自動的に関数名が決まらない場合には明示的に関数名を書け」というオプションが追加されました。
自動的に関数名が決まるのは、変数への代入やオブジェクトリテラルの中などです。

Dr. Axel の解説が詳しいです: http://www.2ality.com/2015/09/function-names-es6.html

/*eslint func-names: [error, as-needed] */

//✔ GOOD
const aaa = function() {}
bbb = function() {}
const obj = {
    ccc: function() {}
}
obj.ddd = function ddd() {}
foo(function eee() {})
;(function fff() { })()

//✘ BAD
obj.ddd = function() {}
foo(function() {})
;(function() { })()

#7470: comma-style

カンマを行末に書くか、行頭に書くかを指定するスタイル ルールにおいて、チェックする場所を増やすオプションが追加されました。

従来は、変数宣言・オブジェクトリテラル・配列リテラルの3箇所をチェックしていましたが、オプションによって次の場所をチェックすることができるようになります。

  • Destructring のオブジェクトパターン
  • Destructring の配列パターン
  • 関数宣言の仮引数
  • 関数呼び出しの実引数
  • import

:thought_balloon: あれ、export文がない...

現時点ではオプションによる指定が必要ですが、4.0.0 でデフォルト有効になる予定です。

/*eslint comma-style: [error, last, {exceptions: {
    ArrayPattern: false,
    ArrowFunctionExpression: false,
    CallExpression: false,
    FunctionDeclaration: false,
    FunctionExpression: false,
    ImportDeclaration: false,
    ObjectPattern: false
}}] */

//✔ GOOD
const {
    a,
    b
} = obj
const [
    a,
    b
] = list
function foo(
    a,
    b
) {}

//✘ BAD
const {
    a
  , b
} = obj
const [
    a
  , b
] = list
function foo(
    a
  , b
) {}

#7518: require-jsdoc

JSDoc コメントが書かれていない Arrow 関数を警告するオプションが追加されました。

/*eslint require-jsdoc: [error, {require: {ArrowFunctionExpression: true}}] */

//✔ GOOD
/**
 * @returns {number} 10
 */
const foo = () => {
    return 10
}

// 変数へ代入されない場合は無視します
foo(() => 10)

//✘ BAD
const foo = () => {
    return 10
}

:pencil: eslint --fix をサポートしたルール

#7387: no-extra-boolean-cast

if (!!foo);
if (Boolean(bar));
Boolean(!!baz);

// ↓↓↓

if (foo);
if (bar);
Boolean(baz);

#7389: eqeqeq

確実にコードの意味を変更しない場合だけ自動修正します。
つまり、==演算子の左右の値の型が判明していて、かつ等しい場合です。

typeof foo == 'bar'
1 == 1

// ↓↓↓

typeof foo === 'bar'
1 === 1
8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?