ESLint v3.12.0 has been released: https://t.co/sUVUKk5ZU0
— ESLint (@geteslint) 2016年12月9日
ESLint 3.12.0 がリリースされました。
いくつかの機能追加・バグ修正が行われています。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
本体への変更
#6525: 新しい Node API: getRules, version
linter.getRules
は、現在読み込まれている全ルールを取得する API です。
結果値はMap
オブジェクトになります。
const {linter} = require("eslint")
const rules = linter.getRules()
console.log(Array.from(rules.keys())) // → ["accessor-pairs", "array-bracket-spacing", ...]
console.log(rules.get("accessor-pairs")) // → {meta: {docs: {...}, schema: {...}}, create: ...}}
初期状態では、結果値にはすべてのコアルールが含まれます。
プラグインを利用した Linting を行った後に呼び出すと、そのプラグインのルールも含まれます。
linter.version
, CLIEngine.version
はそれぞれ ESLint のバージョン番号が文字列で入っています。
(require("eslint/package.json").version
と同じ)
#7699: airbnb-base
eslint --init
コマンドで選択できる airbnb 設定は、React を利用することが前提の設定です。
React を使用しない場合は airbnb-base
設定を使うことになっています。
今回、eslint --init
コマンドで airbnb-base
設定も選択できるようになりました。
$ eslint --init
? How would you like to configure ESLint? Use a popular style guide
? Which style guide do you want to follow? Airbnb
+ ? Do you use React? (y/N)
新しいルール
#7563: no-await-in-loop
通常のループ内にawait
式を書くと警告するルールです。
そのようなawait
式は直列実行されるので並列化しましょう、という意図のようです。
/*eslint no-await-in-loop: error */
async function wrap() {
//✔ GOOD
await Promise.all(list.map(doSomething))
//✘ BAD
for (const value of list) {
await doSomething(value)
}
}
個人的には、非同期処理をループ文で直列化できる事も async/await の利点の1つだと思ってますが...
オプションが追加されたルール
#7681: indent
オブジェクトリテラルと配列リテラルで、2番目以降のプロパティ/要素を1番目のプロパティ/要素に揃えるオプションが追加されました。
/*eslint indent: [error, 4, {ObjectExpression: first, ArrayExpression: first}] */
//✔ GOOD
const a = { foo: 1,
bar: 2,
baz: 3 }
const b = [ 1,
2,
3 ]
//✘ BAD
const a = { foo: 1,
bar: 2,
baz: 3 }
const b = [ 1,
2,
3 ]
eslint --fix
をサポートしたルール
#7701: capitalized-comments
// this is a pen.
// ↓↓↓
// This is a pen.