Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESLintの--cacheを有効化して2回目以降のlintにかかる時間を短縮する #2592

Closed
3 tasks
nanae772 opened this issue Mar 5, 2025 · 2 comments · Fixed by #2597
Closed
3 tasks

Comments

@nanae772
Copy link
Contributor

nanae772 commented Mar 5, 2025

内容

表題の通り、ESLintの--cacheオプションを有効にしてlintにかかる時間を短縮するとよいのではないかと思いissueを立てました。
https://eslint.org/docs/latest/use/command-line-interface#caching

最初はcacheが無いのでかかる時間は変わりませんが、2回目以降は差分があったファイルのみlintをかけるようなのでかなり短縮されるみたいです。
試したところ私の環境だと1回目は1分40秒ほど、2回目は10秒弱になりました(1つのファイルだけ差分があった場合)。

導入を希望する理由

lintにかかる時間が短縮されれば開発効率の向上に繋がりそう。

Pros 良くなる点

  1. 開発環境において2回目以降のlintが劇的に速くなる

Cons 悪くなる点

  1. .eslintcache というファイルが出力されてしまう(そこまで問題は無さそうですが)
  2. CIではcacheが無いのでこの恩恵は受けられない
  3. ESLintのバージョンアップや設定を変更した後はcacheを消さなければその変更が反映されない
  4. キャッシュが壊れることがあるらしい?

下2つはChatGPTに聞いて教えてもらいました。
キャッシュが壊れる点については分かってませんが、3番目は忘れそうなので何かうまいやり方があるといいかもしれません。

実現方法

対応としては、以下の2点だけかなと思っています。

  1. package.jsonでlintを定義している箇所--cache --cache-strategy contentをつける
  2. .gitignore.eslintcacheを追加する

--cache-strategyについてはmetadata, contentの2種類(デフォルトではmetadata)あるようで、CI上でも実行される場合はcontentの方が良いらしいです(あまりよく分かって無いのですが、下記ブログを参考にさせていただきました)。
https://madogiwa0124.hatenablog.com/entry/2022/08/07/112051

VOICEVOXのバージョン

0.?.0

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

全然ESLintに詳しくないのですが、lintにかかる時間を短縮できればうれしいなと思い、方法を調べてみて導入のハードルは低そうだったのでissueにしてみました。
詳しい方、知見ある方、いろいろコメントいただけると嬉しいです🙇‍♂️

@Hiroshiba
Copy link
Member

Hiroshiba commented Mar 6, 2025

なるほどです!!cacheを効かせるの、ありだと感じました!!

--cache-strategy content

これは一旦デフォルト値の方で良さそうに思いました!
というのもまあCI環境でキャッシュを使わない予定なので。

ESLintのバージョンアップや設定を変更した後はcacheを消さなければその変更が反映されない
キャッシュが壊れることがあるらしい?

ありえそうですね!
キャッシュの消し方をreadmeで案内すると良さそう?

(以下他に考えたことメモ)

CI環境でキャッシュを効かせようと頑張ることもできそう。node_modulesとかはキャッシュしてるはずなので。
けど今のところ同時実行されてるe2eテストのほうが実行時間が長いんですよね。
なのでCI環境はlintのキャッシュがなくても良さそう!

@nanae772
Copy link
Contributor Author

nanae772 commented Mar 6, 2025

ありがとうございます、ではPR作成してみます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants