mise.tomlを書き換えずに別バージョンで動作確認したい
古いバージョンでの挙動を確認したいときなど、mise.tomlを書き換えずにその場限り別バージョンのツールを使いたい場面がある。mise execを使うと、mise.tomlを変更せずに指定したバージョンでコマンドを実行できる。
mise execの基本
mise exec <tool>@<version> -- <command>の形式で、使うツールのバージョンとコマンドを指定する。jq = "1.7.1"と書かれたmise.tomlがあるディレクトリで、一時的に1.6を使ってみる。
$ mise exec -- jq --version
jq-1.7.1
$ mise exec jq@1.6 -- jq --version
jq-1.6
mise execにバージョンを指定しなければ、mise.toml通りのバージョンが使われる。バージョンを指定した場合でもmise.tomlの記述は変わらない。
$ cat mise.toml
[tools]
jq = "1.7.1"
mise xはmise execの短いエイリアスである。
指定していないツールはmise.tomlの設定のまま使われる
mise.tomlに複数のツールを書いている場合、mise execでバージョンを指定したツール以外はmise.toml通りのバージョンで動く。
[tools]
jq = "1.7.1"
node = "22"
$ mise exec jq@1.6 -- sh -c 'jq --version && node --version'
jq-1.6
v22.23.2
jqだけ1.6に切り替わり、nodeはmise.tomlに書かれた22系のバージョンのまま実行されている。
mise.tomlが無いディレクトリでもその場限りで使える
mise.tomlが存在しないディレクトリでも、mise execにツールとバージョンを指定すればその場限りで使える。ツールが未インストールの場合は自動的にインストールされる。
$ mise exec jq@1.8 -- jq --version
mise jq@1.8.2 [1/2] install
mise jq@1.8.2 [1/2] download jq-macos-arm64
mise jq@1.8.2 [2/2] verify GitHub artifact attestations
mise jq@1.8.2 [2/2] ✓ GitHub artifact attestations verified
mise jq@1.8.2 [2/2] checksum jq-macos-arm64
mise jq@1.8.2 [2/2] extract jq-macos-arm64
mise jq@1.8.2 ✓ installed
jq-1.8.2
シェルの構文を含むコマンドは–commandで指定する
--の後に続けるコマンドはシェルを経由せずそのまま実行される。&&や|のようなシェルの構文を使いたい場合は、sh -cで包むか--commandオプションに文字列として渡す。
$ mise exec jq@1.6 node@22 --command "jq --version && node --version"
jq-1.6
v22.23.2
\第一線のプログラマーの行動原理を学べる!/
