ESLint v4.9.0 has been released: https://t.co/ldgGclfMJw
— ESLint (@geteslint) 2017年10月14日
ESLint 4.9.0 がリリースされました。
小さな機能追加とバグ修正が行われています。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
🚀 本体への機能追加
#9073: --fix-dry-run
CLI オプション
エディタ連携等の開発者向けです。
この CLI オプションは、--fix
と同様にソースコードの自動修正を実行しますが、ソースコード ファイルを修正せず、デフォルトではどこにも表示しません。--fix-dry-run
の結果を表示するには、JSON フォーマッター等のフォーマッターを指定する必要があります。
$ cat test.js | eslint --stdin --fix-dry-run --format=json
この CLI オプションは、外部プロセス呼び出しで ESLint を利用するツールが自動修正機能を利用するために追加されました。
💡 新しいルール
#9141: lines-between-class-members
クラス定義において、メソッド間の空白行を矯正するスタイル・ルールです。
/*eslint lines-between-class-members: error */
//✘ BAD
class Bad {
foo() {
}
bar() {
}
}
//✓ GOOD
class Bad {
foo() {
}
bar() {
}
}
#9389: multiline-comment-style
複数行コメントの書き方を矯正するスタイル・ルールです。
デフォルトでは、各行頭に*
があるブロックコメントを使うよう警告します。
/*eslint multiline-comment-style: error */
//✘ BAD
// ラインコメントで
// 複数行
/*
行頭に`*`が無い
ブロックコメント
*/
//✓ GOOD
/*
* 行頭に`*`がある
* ブロックコメント
*/
🔧 オプションが追加されたルール
#8565: lines-around-comment allowClassStart
and allowClassEnd
コメントの前後の空白行を矯正するスタイル・ルール lines-around-comment について、クラス本体の先頭と末尾にあるコメントをチェックしないようにするオプションが追加されました。
/*eslint lines-around-comment: [error, {allowClassStart: true}] */
//✓ GOOD
class A {
/**
* foo.
*/
foo() {
}
}
#9206: array-bracket-newline consistent
配列のカッコ[]
の内側の改行を矯正するスタイル・ルール array-bracket-newline について「どちらかに改行があれば他方にも改行が必要」とするオプションが追加されました。
/*eslint array-bracket-newline: [error, consistent] */
//✘ BAD
const xs1 = [
1, 2, 3 ]
//✓ GOOD
const xs2 = [
1, 2, 3
]
const xs3 = [1, 2, 3]
#9229: no-else-return allowElseIf
return
文で終わるif
構文のelse
句を警告するルール no-else-return について、そのelse
句が別のif
文であったときも警告するオプションが追加されました。
/*eslint no-else-return: [error, {allowElseIf: false}] */
//✘ BAD
function wrap(a) {
if (a === 0) {
return "zero"
} else if (a === 1) {
return "one"
}
}
//✓ GOOD
function wrap(a) {
if (a === 0) {
return "zero"
}
if (a === 1) {
return "one"
}
}
#9395: require-jsdoc FunctionExpression
JSDoc コメントが無い関数定義やクラス定義を警告するルール require-jsdoc について、変数宣言の初期化式としての関数式もチェックするオプションが追加されました。
/*eslint require-jsdoc: [error, {require: {FunctionExpression: true}}] */
//✘ BAD
const foo = function() {
// do something...
}
#9413: no-restricted-imports and no-restricted-modules message
特定のパッケージの読込を禁止するルール no-restricted-imports と no-restricted-modules について、パッケージ毎に独自のエラーメッセージを指定できるようになりました。これにより、代わりに使うべきパッケージを提示することができます。
/*eslint no-restricted-modules: [error,
{name: "domain", message: "There is no substitute."},
{name: "sys", message: "Use 'util' instead."}
] */
//✘ BAD
const domain = require("domain")
const sys = require("sys")
✒️ eslint --fix
をサポートしたルール
今回はありません。