Homebrewやnvmで既にインストールしたバージョンをmiseでも使いたい

nvmやpyenv、Homebrewで既にインストール済みのNode.jsやPythonがある状態でmiseを導入する場合、同じバージョンを二重にダウンロードし直すのは無駄である。mise syncを使うと、他のバージョンマネージャがインストール済みのバージョンをmise管理下にシンボリックリンクとして取り込める。

mise sync node –brewの基本

Homebrewでnode@23がインストール済みの状態で実行する。

$ mise sync node --brew
Synced node@23 from Homebrew
$ mise ls node
node  23 (symlink)

(symlink)と表示され、実体はHomebrewのインストール先を指すシンボリックリンクである。

$ ls -la ~/.local/share/mise/installs/node/23
installs/node/23 -> /opt/homebrew/opt/node@23

取り込んだバージョンはmise usemise execなど、他のツールと同じように扱える。

$ mise x node@23 -- node --version
v23.10.0

nodeには--brewの他に--nodenv--nvmもあり、それぞれNodenv、nvmのインストール済みバージョンを取り込める。

mise sync python –uvは双方向に同期される

pythonサブコマンドには--pyenvに加えて--uvがある。--uvは他のソースと違い、mise側とuv側の両方に同期する双方向の同期である。

uvだけでインストール済みのバージョンをmise側に取り込む場合、通常の同期と同じ向きになる。

$ uv python install 3.12
$ mise sync python --uv
Synced python@3.12.11 from uv to mise
$ mise ls python
python  3.12.11 (symlink)

逆に、mise側にだけ存在するバージョンがある場合は、uv側にシンボリックリンクとして書き込まれる。

$ mise install python@3.11.9
$ mise sync python --uv
Synced python@3.11.9 from mise to uv
$ uv python list --only-installed
cpython-3.11.9-macos-aarch64-none  ~/.local/share/uv/python/cpython-3.11.9-macos-aarch64-none/bin/python3.11

uv runuv python pinのように普段uvコマンド経由でPythonバージョンを指定している場合でも、mise側でインストールしたバージョンをそのまま使えるようになる。

rubyはHomebrewだけに対応している

rubyサブコマンドは--brewしか用意されておらず、rbenvからの取り込みには対応していない。

$ mise sync ruby --help
Usage: mise sync ruby <--brew>

nodeやpythonと同じ感覚でrbenv用のオプションを探しても見つからないので注意する。