ESLint v6.4.0

前 [v6.3.0](https://qiita.com/mysticatea/items/20b08f8d7f75bca07202) | 次 [v6.5.0](https://qiita.com/mysticatea/items/195aa1f585a31b2153f2)

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">ESLint v6.4.0 has been released: <a href="https://t.co/AP73OF6hZe">https://t.co/AP73OF6hZe</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/1172689361479045121?ref_src=twsrc%5Etfw">September 14, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ESLint `6.4.0` がリリースされました。
小さな機能追加とバグ修正が行われています。

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

> 🏢 [日本語 Issue 管理リポジトリ](https://github.com/eslint/eslint-jp)
> 👫 [日本語サポート チャット](https://gitter.im/eslint/eslint-jp)
> 🏢 [本家リポジトリ](https://github.com/eslint/eslint)
> 👫 [本家サポート チャット](https://gitter.im/eslint/eslint)

# 🚀 本体への機能追加

特になし。

# 💡 新しいルール

## [default-param-last](https://eslint.org/docs/rules/default-param-last)

🔖 [#12188](https://github.com/eslint/eslint/pull/12188)

仮引数の最初や途中にだけデフォルト パラメーター構文を使うことを禁止するルールです。

```js:例
/*eslint default-param-last: error */

//✘ BAD
function f1(a = 0, b, options) { /* ... */ }
function f2(a, b = 0, options) { /* ... */ }

//✔ GOOD
function f3(a, b, options = {}) { /* ... */ }
function f4(a, b = 0, options = {}) { /* ... */ }
```

**[Online Demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyplc2xpbnQgZGVmYXVsdC1wYXJhbS1sYXN0OiBlcnJvciAqL1xuXG4vL+KcmCBCQURcbmZ1bmN0aW9uIGYxKGEgPSAwLCBiLCBvcHRpb25zKSB7IC8qIC4uLiAqLyB9XG5mdW5jdGlvbiBmMihhLCBiID0gMCwgb3B0aW9ucykgeyAvKiAuLi4gKi8gfVxuXG4vL+KclCBHT09EXG5mdW5jdGlvbiBmMyhhLCBiLCBvcHRpb25zID0ge30pIHsgLyogLi4uICovIH1cbmZ1bmN0aW9uIGY0KGEsIGIgPSAwLCBvcHRpb25zID0ge30pIHsgLyogLi4uICovIH1cbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)**

## [no-import-assign](https://eslint.org/docs/rules/no-import-assign)

🔖 [#12252](https://github.com/eslint/eslint/pull/12252)

ES Modules の `import` 構文で作成した変数について、変更を禁止するルールです。これらは読み取り専用なので、変更しようとすると実行時エラーになります。

```js:例
/*eslint no-import-assign: error */

import mod, { named } from "./mod.mjs"
import * as mod_ns from "./mod.mjs"

//✘ BAD
mod = 1
named = 2
mod_ns.named = 3
mod_ns = {}

//✔ GOOD
mod.prop = 1
named.prop = 2
mod_ns.named.prop = 3
```

**[Online Demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyplc2xpbnQgbm8taW1wb3J0LWFzc2lnbjogZXJyb3IgKi9cblxuaW1wb3J0IG1vZCwgeyBuYW1lZCB9IGZyb20gXCIuL21vZC5tanNcIlxuaW1wb3J0ICogYXMgbW9kX25zIGZyb20gXCIuL21vZC5tanNcIlxuXG4vL+KcmCBCQURcbm1vZCA9IDFcbm5hbWVkID0gMlxubW9kX25zLm5hbWVkID0gM1xubW9kX25zID0ge31cblxuLy/inJQgR09PRFxubW9kLnByb3AgPSAxXG5uYW1lZC5wcm9wID0gMlxubW9kX25zLm5hbWVkLnByb3AgPSAzXG4iLCJvcHRpb25zIjp7InBhcnNlck9wdGlvbnMiOnsiZWNtYVZlcnNpb24iOjgsInNvdXJjZVR5cGUiOiJtb2R1bGUiLCJlY21hRmVhdHVyZXMiOnt9fSwicnVsZXMiOnt9LCJlbnYiOnt9fX0=)**

## [prefer-regex-literals](https://eslint.org/docs/rules/prefer-regex-literals)

🔖 [#12254](https://github.com/eslint/eslint/pull/12254)

静的に内容が決定する `new RegExp(...)` 式について、正規表現リテラルを使用するように矯正するルールです。

```js:例
/*eslint prefer-regex-literals: error */

//✘ BAD
const r1 = new RegExp("\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d");
const r2 = RegExp(`^\\d\\.$`);
const r3 = new RegExp(String.raw`^\d\.$`);

//✔ GOOD
const r4 = /\d\d\.\d\d\.\d\d\d\d/;
const r5 = /^\d\.$/;
const r6 = new RegExp(pattern);
const r7 = RegExp("abc", flags);
const r8 = new RegExp(prefix + "abc");
const r9 = RegExp(`${prefix}abc`);
const r0 = new RegExp(String.raw`^\d\. ${sufix}`);
```

**[Online Demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyplc2xpbnQgcHJlZmVyLXJlZ2V4LWxpdGVyYWxzOiBlcnJvciAqL1xuXG4vL+KcmCBCQURcbmNvbnN0IHIxID0gbmV3IFJlZ0V4cChcIlxcXFxkXFxcXGRcXFxcLlxcXFxkXFxcXGRcXFxcLlxcXFxkXFxcXGRcXFxcZFxcXFxkXCIpO1xuY29uc3QgcjIgPSBSZWdFeHAoYF5cXFxcZFxcXFwuJGApO1xuY29uc3QgcjMgPSBuZXcgUmVnRXhwKFN0cmluZy5yYXdgXlxcZFxcLiRgKTtcblxuLy/inJQgR09PRFxuY29uc3QgcjQgPSAvXFxkXFxkXFwuXFxkXFxkXFwuXFxkXFxkXFxkXFxkLztcbmNvbnN0IHI1ID0gL15cXGRcXC4kLztcbmNvbnN0IHI2ID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbmNvbnN0IHI3ID0gUmVnRXhwKFwiYWJjXCIsIGZsYWdzKTtcbmNvbnN0IHI4ID0gbmV3IFJlZ0V4cChwcmVmaXggKyBcImFiY1wiKTtcbmNvbnN0IHI5ID0gUmVnRXhwKGAke3ByZWZpeH1hYmNgKTtcbmNvbnN0IHIwID0gbmV3IFJlZ0V4cChTdHJpbmcucmF3YF5cXGRcXC4gJHtzdWZpeH1gKTtcbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)**


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

## [accessor-pairs](https://eslint.org/docs/rules/accessor-pairs) `enforceForClassMembers`

🔖 [#12192](https://github.com/eslint/eslint/pull/12192)

不揃いな Getters/Setters ペアを禁止するルールに、クラス構文をサポートするオプションが追加されました。

```js
/*eslint accessor-pairs: [error, { enforceForClassMembers: true }] */

//✘ BAD
class C {
    set prop(value) { /* ... */ }
}
```

**[Online demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyplc2xpbnQgYWNjZXNzb3ItcGFpcnM6IFtlcnJvciwgeyBlbmZvcmNlRm9yQ2xhc3NNZW1iZXJzOiB0cnVlIH1dICovXG5cbi8v4pyYIEJBRFxuY2xhc3MgQyB7XG4gICAgc2V0IHByb3AodmFsdWUpIHsgLyogLi4uICovIH1cbn1cbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)**

## [computed-property-spacing](https://eslint.org/docs/rules/computed-property-spacing) `enforceForClassMembers`

🔖 [#12214](https://github.com/eslint/eslint/pull/12214)

Computed プロパティのスペースを矯正するルールに、クラス構文をサポートするオプションが追加されました。

```js
/*eslint computed-property-spacing: [error, never, { enforceForClassMembers: true }] */

const funcKey = Symbol()

//✔ GOOD
class C {
    [ funcKey ]() { /* ... */ }
}
```

**[Online demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyplc2xpbnQgY29tcHV0ZWQtcHJvcGVydHktc3BhY2luZzogW2Vycm9yLCBuZXZlciwgeyBlbmZvcmNlRm9yQ2xhc3NNZW1iZXJzOiB0cnVlIH1dICovXG5cbmNvbnN0IGZ1bmNLZXkgPSBTeW1ib2woKVxuXG4vL+KclCBHT09EXG5jbGFzcyBDIHtcbiAgICBbIGZ1bmNLZXkgXSgpIHsgLyogLi4uICovIH1cbn1cbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6OCwic291cmNlVHlwZSI6Im1vZHVsZSIsImVjbWFGZWF0dXJlcyI6e319LCJydWxlcyI6e30sImVudiI6e319fQ==)**

# ✒️ `eslint --fix` をサポートしたルール

特になし。

# ⚠️ 非推奨になったルール

特になし。