ESLint v3.16.0 has been released: https://t.co/bwDUMT8n4K
— ESLint (@geteslint) 2017年2月20日
ESLint 3.16.0 がリリースされました。
いくつかの機能追加・バグ修正が行われています。
今回はプラグイン開発者向けの変更が主です。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
✨ 本体の変更
#7810: トークン・コメントを取得する API を改善
プラグイン・カスタム ルール開発者向けです。
AST ノードを構成するトークン・コメントを取得するための公開 API が改善されました。
includeComments
オプション
従来は、トークンを取得するときと、トークンかコメントを取得するときとで異なるメソッドを利用していました。
sourceCode.getTokenAfter(node);
sourceCode.getTokenOrCommentAfter(node);
トークンを取得するメソッドが 10 種類 (Before, After, Between, First, Last, それぞれ単数・複数) あるのに対して、トークンかコメントを取得するメソッドは 2 種類だけでした。今回、各メソッドに取得対象にコメントを含めるオプションが追加され、getTokenOrCommentAfter
とgetTokenOrCommentBefore
は非推奨になりました。
sourceCode.getTokenAfter(node);
sourceCode.getTokenAfter(node, {includeComments: true});
filter
オプション
ルールを書いていると「ノードの次のトークンを取得したいが、閉じカッコは無視したい」というような場合がよくあります。従来はループ文を用いて探索する必要がありました。
let operatorToken = sourceCode.getTokenAfter(node.left);
while (operatorToken.value === ")") {
operatorToken = sourceCode.getTokenAfter(operatorToken);
}
今回、指定した条件にマッチしないトークンを無視するための filter
オプションが追加されました。
const operatorToken = sourceCode.getTokenAfter(node.left, {filter: t => t.value !== ")"});
#8035, #8054: 大きなファイル向けの性能改善
eslint --fix
等のアルゴリズムを見直して、計算量 (O(n)
的なやつ) を改善しました。
大きなファイルをチェックする時の性能が改善していると思います。
💡 新しいルール
今回はありません。
🔧 オプションが追加されたルール
今回はありません。
✒️ eslint --fix
をサポートしたルール
#7841: no-unused-labels
foo: while (a) { foo(a) }
// gets fixed to:
while (a) { foo(a) }
おまけ
Excited about the new token iterator options for rule authors included in this release! Great work by @mysticatea https://t.co/HmPjvykByd
— Kai Cataldo (@kai_cataldo) 2017年2月20日