2024-07-10
個人のプロジェクトで、ESLint v9 へのメジャーバージョンアップデートがうまくできなくて辛かった。
なので、Biome (旧: Rome) に移行すると良かったので、何が良かったのかを纏めます。
単純に ESLint を削除し、Biome の README にしたがってセットアップすればOK。
ルールは既存のものと差が出ないように調整しましたが、私の設定ならプラグインなどはなくてもできました。
https://github.com/biomejs/biome
一応調べたので、メモとして残しておきます。
が、途中で挫折しました。
移行ツールみたいなのもあるようですが、その後メンテできるんだろうかみたいな不安もあったりして、Biome に移行しました。
CI (GitHub Actions) 上では、約8秒ぐらい短縮されていました。
手元のPCで実行した結果も、7.7倍ぐらい速くなっていました。time
で計測した結果は以下のとおりです。
$ time npm run lint
> lint
> biome check ./src/
Checked 307 files in 37ms. No fixes applied.
real 0m0.279s
user 0m0.399s
sys 0m0.067s
$ time npm run lint
> lint
> eslint ./src/
...
real 0m2.145s
user 0m3.222s
sys 0m0.290s
package.json
の依存が @biomejs/biome だけになりました。
ESLint の頃は、本体+プラグイン複数の依存があり、若干ややこしいな〜、と思っていました。
個人プロジェクトなので、メンテナンスコストを減らすためなるべく依存関係減らしたいので、細かいですが結構嬉しい変化でした。
Biome は今後も継続的にアップデートされているかどうかも気になります。
少なくとも、直近1年間は継続的にコミットがされていますし、Star は 12.6k あります。
https://github.com/biomejs/biome/community
スポンサーもいくつかついているようです。
(Gold Sponsors には、WebRTC で有名な 時雨堂 が入っているんですね)
https://github.com/biomejs/biome#sponsors
Biome は、もともと Rome という名前で開発されていました。
Rome を Fork しているようです。
詳細まで読んでいませんが、Rome Tools Inc. が終わり、有志で開発されているような印象です。
https://biomejs.dev/blog/annoucing-biome/
Biome はシンプルに使えて、高速に実行できるので移行してよかったと感じています。