lint-staged で実行するコマンドをステージングされているファイルのみを対象にする
husky と lint-staged を使ってコミット時に Linter/Formatter を実行するような記事はよく見るし、自分も昨日、一昨日と調べて書いた。
手元の lint-staged で Lint を動かしたりしていたのだけど、ステージングに上がった際に結構時間がかかって若干不満があったので、「これはもしかして全ファイル対象に実行しているのか?」と思って調べた。
Example: Export a function to build your own matchers
Example: Wrap filenames in single quotes and run once per file
ここらへんを見るに、.lintstagedrc.js
を作ってそこに設定を書かないといけなさそう。
他の記事も色々見てたんだけど、どうやらステージングに多くのファイルがあると落ちるっぽい?ということみたい。
lint-staged で大量ファイルを lint しようとすると死ぬのを回避する (windows) - Qiita
Example: Run ESLint on entire repo if more than 10 staged files
公式だと 10 ファイルで区別しているから、一応 10 ファイルで区別しておいたほうがいいのかも。
結局、filename を取って 1 ファイルにつき 1 回ずつ実行するしかないのかな。
ステージングにあるファイルだけを対象にするかどうかをオプションかなにかで渡せるようにしてほしかったが、できないのかな。「ステージングにあるファイル」という対象が取れないのだろうか。