TL;DR
- 言語やツールのバージョン管理を asdf から mise に乗り換えた。
- Homebrew で入れ、
mise installで各言語を入れ直し、mise use -gでデフォルトのバージョンを設定した。asdf の.tool-versionsもそのまま使える。
背景
乗り換えた理由は 3 つある。
- タスクランナーを別に用意したくない(Makefile も使いたくない)
- 使っているプラグイン(asdf-kotlin)で mise に乗り換えようとする動きがあった
- asdf の動作がもっさりすることがたまにあった
asdf では、Bun、Clojure、.NET、Elixir、Erlang、Flutter、Java、Kotlin、Node.js、pnpm、Poetry、Python、Rebar3、Ruby を管理していた。Node.js と Ruby は業務で使っているので必須である。
Leiningen は今後 Clojure CLI に乗り換えるので、移さなかった。PHP は依存関係を手動で管理するなどエラーの解決が面倒になったので、Homebrew で入れることにした。どうせ開発では Docker を使い、趣味で触ることも少ないので妥協した。
環境
$ mise -v
2025.3.6 macos-arm64 (2025-03-18)検証
Homebrew でインストールし、zsh で mise を有効にする。
brew install mise
echo 'eval "$(mise activate zsh)"' >> "${ZDOTDIR-$HOME}/.zshrc"一部を除いて最新版を入れた。インストールできるバージョンは mise ls-remote で確認できる。Java は LTS を選んだ。
mise install node@latest
mise install [email protected]
mise install bun@latest
mise install [email protected]
mise install [email protected]
mise install rebar@latest
mise install [email protected]
mise install pnpm@latest
mise install poetry@latest
mise install clojure@latest
mise install dotnet@latest
mise install [email protected]
mise install kotlin@latest
mise install flutter@latestmise install deno@latest
mise install terraform@latestデフォルトのバージョンは mise use -g で設定する。プロジェクトごとにバージョンを指定するときは、-g を付けない。
mise use -g node@latest結果
バージョンやタスクは mise.toml で管理する。asdf の .tool-versions もそのまま使える。
キーワード
- asdf
- mise
- Homebrew