mise でプロジェクトごとのツールバージョンを管理する
開発ツールのバージョン管理に mise を使っている。以前は asdf を使っていたが、mise に移行してから快適になった。
mise とは
mise (旧 rtx) は asdf 互換のツールバージョンマネージャ。asdf のプラグインエコシステムをそのまま使えて、Rust 製で動作が速い。
asdf との違い
- Rust 製なので shim の解決が速い
mise.tomlで設定でき、TOML 形式で読みやすいmise runでタスクランナーとしても使える.env的な環境変数管理も内蔵している
プロジェクトでの使い方
プロジェクトルートに mise.toml を置くだけ。
[tools]
terraform = "1.14.7"
node = "22"
python = "3.12"
チームメンバーが mise install を実行すれば、全員同じバージョンのツールを使える。
注意点
非インタラクティブシェル (CI 環境など) では shim の解決に失敗することがある。GitHub Actions なら mise activate を使うか、直接パスを指定すればよい。
asdf からの移行はスムーズだった。互換性の問題もほぼなし。一番の改善は速度で、シェル起動時のオーバーヘッドが体感できるレベルで減った。