プロジェクトを問わず使うツールのバージョンを設定したい

mise useは、実行したディレクトリのmise.tomlにツールとバージョンを書き込む。プロジェクトごとにバージョンを揃えるにはこれで十分だが、fzfripgrepのように特定のプロジェクトに紐付かず、どこでも同じバージョンを使いたいツールもある。mise use --globalを使うと、ディレクトリに関係なく共通で使うツールのバージョンを設定できる。

mise use –global の基本

--globalオプションを付けてmise useを実行する。

$ mise use --global fzf@0.55.0
mise fzf@0.55.0              [1/3] install
mise fzf@0.55.0              [1/3] download fzf-0.55.0-darwin_arm64.tar.gz
mise fzf@0.55.0              [2/3] checksum fzf-0.55.0-darwin_arm64.tar.gz
mise fzf@0.55.0              [3/3] extract fzf-0.55.0-darwin_arm64.tar.gz
mise fzf@0.55.0            ✓ installed
mise ~/.config/mise/config.toml tools: fzf@0.55.0

書き込み先はカレントディレクトリのmise.tomlではなく、~/.config/mise/config.tomlというグローバル設定ファイルになる。

[tools]
fzf = "0.55.0"

このファイルに書かれたツールは、mise.tomlを持たないディレクトリも含め、どのディレクトリで実行しても同じバージョンが有効になる。

ローカルのmise.tomlがある場合はそちらが優先される

プロジェクトのmise.tomlに同じツールが書かれている場合、グローバル設定よりローカルのmise.tomlの指定が優先される。

$ mise use fzf@0.54.0
mise fzf@0.54.0              [1/3] install
mise fzf@0.54.0              [1/3] download fzf-0.54.0-darwin_arm64.zip
mise fzf@0.54.0              [2/3] checksum fzf-0.54.0-darwin_arm64.zip
mise fzf@0.54.0              [3/3] extract fzf-0.54.0-darwin_arm64.zip
mise fzf@0.54.0            ✓ installed
mise /path/to/project/mise.toml tools: fzf@0.54.0

グローバル設定ではfzfは0.55.0だが、このディレクトリでmise currentを実行すると、ローカルのmise.tomlに書かれた0.54.0が優先される。

$ mise current fzf
0.54.0

mise doctorで読み込まれている設定ファイルを確認すると、グローバル設定とローカルのmise.tomlの両方が読み込まれ、後から評価されるローカル側の指定が優先されている。

config_files:
  ~/.config/mise/config.toml
  /path/to/project/mise.toml

用途

mise use --globalは、プロジェクトのチームメンバー間でバージョンを揃える必要のない、個人の作業環境で使うCLIツールのバージョン管理に向いている。プロジェクト間で共有したいツールのバージョンはプロジェクトのmise.tomlに書き、個人の好みで選びたいツールはmise use --globalでグローバル設定に書く、という使い分けができる。