asdfから移行するときに.tool-versionsを書き換えたくない

asdfはプロジェクトで使うツールのバージョンを.tool-versionsというファイルで管理する。mise.tool-versionsをそのまま読み込めるため、asdfからmiseへ移行する際に.tool-versionsを書き換える必要はない。

mise.tomlがなくても.tool-versionsだけで動く

.tool-versionsには、ツール名とバージョンをスペース区切りで1行ずつ記述する。

jq 1.7.1

このファイルがあるディレクトリでmise installを実行すると、mise.tomlが存在しなくてもインストールが進む。

$ mise install
mise jq@1.7.1        [1/2] install
mise jq@1.7.1        [1/2] download jq-macos-arm64
mise jq@1.7.1        [2/2] checksum jq-macos-arm64
mise jq@1.7.1        [2/2] extract jq-macos-arm64
mise jq@1.7.1      ✓ installed

$ mise current jq
1.7.1

mise config lsで確認すると、.tool-versionsも設定ファイルの1つとして扱われている。

$ mise config ls
/path/to/project/.tool-versions  jq

mise.tomlと.tool-versionsが両方ある場合はmise.tomlが優先される

同じディレクトリにmise.toml.tool-versionsの両方があり、それぞれ異なるバージョンを指定している場合を試す。

# mise.toml
[tools]
jq = "1.6"
# .tool-versions
jq 1.7.1

この状態でmise currentを実行すると、.tool-versions1.7.1ではなくmise.toml1.6が有効になる。

$ mise current jq
1.6

mise config lsで確認すると、.tool-versionsよりmise.tomlが後(優先度の高い側)に表示される。

$ mise config ls
/path/to/project/.tool-versions  jq
/path/to/project/mise.toml       jq

新規にプロジェクトを始める場合、公式ドキュメントでも柔軟性の高いmise.tomlの使用が推奨されている。

.tool-versionsをmise.tomlに変換する

.tool-versionsから新たにmise.tomlを作りたい場合は、mise generate config--tool-versionsオプションで既存ファイルを渡す。

$ mise generate config --tool-versions .tool-versions --dry-run
mise would write to mise.toml
[tools]
jq = "1.7.1"
shellcheck = "0.11.0"

--dry-runを外すと、プレビューと同じ内容がmise.tomlとして実際に書き出される。