textlint --cacheオプションでチェックを高速化した
textlint 7.2.0で --cache
と --cache-location
オプションをサポートしました。
基本的にはESLintのキャッシュオプションと同じです。 前回のLint結果のキャッシュから変化したファイルのみがチェックの対象になる仕組みです。
使い方
textlint
コマンドに --cache
オプションを付けて実行するだけです。
後は、毎回このコマンドを付けて実行すれば変更したファイルのみがチェック対象になるので、実行時間が高速化されます。
textlint --cache docs/
--cache
オプションを付けるとデフォルトでは、 .textlintcache
という名前のファイルにキャッシュができます。
キャッシュファイルを任意の名前にしたい場合は --cache-location
オプションで指定した場所にキャッシュファイルを作ることができます。
実行例
自分が知ってる中では一度にtextlintがやる処理が一番多いasciidwango/js-primer: JavaScriptの入門書で試してみます。
このプロジェクトではファイル数やルール数が多いのもそうですが、textlintの中でESLintを動かしてJavaScriptのコードもチェックしてたりキャッシュの有無がかなり速度に影響がありました。
–cacheなし
15秒ぐらいかかって遅い。
$ time npm run textlint:no-cached
> [email protected] textlint:no-cached /Users/azu/.ghq/github.com/asciidwango/js-primer
> summary-to-path ./source/README.md | xargs textlint -f pretty-error
npm run textlint:no-cached 14.68s user 1.18s system 99% cpu 15.926 total
–cacheあり
3秒程度になった。 (1つファイルを変更した状態で実行)
$ time npm run textlint
> [email protected] textlint /Users/azu/.ghq/github.com/asciidwango/js-primer
> summary-to-path ./source/README.md | xargs textlint -f pretty-error --cache
npm run textlint 2.17s user 0.41s system 85% cpu 3.022 total
おわり
--cache
をつけるだけで結構実行時間が変わるので、大量のファイルをtextlintで繰り返しチェックしている場合は試してみてください。
また、エディタ連携系なら元々1つのファイルのみを対象に実行しているはずなので、キャッシュなくても普通な速度で動くと思います。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。