mise.tomlのバージョン範囲内で新しいバージョンが出ていないか確認したい

mise.tomljq = "1.8"のようにバージョンを範囲指定していると、その範囲内でより新しいパッチバージョンが出ていても自動では切り替わらない。mise outdatedで更新可能なバージョンを確認し、mise upgradeでアップグレードできる。

mise outdatedの基本

jq = "1.8"と指定した状態で1.8.0をインストールしている場合を試す。

[tools]
jq = "1.8"
$ mise outdated
jq  1.8  1.8.0  1.8.2  /path/to/project/mise.toml

左から順に、ツール名・mise.tomlに書かれたバージョン範囲・現在インストールされているバージョン・その範囲内で最新のバージョンを表す。1.8の範囲内では1.8.2が最新である。

mise upgradeで範囲内の最新バージョンにアップグレードする

mise upgradeにツール名を指定すると、mise.tomlのバージョン範囲を維持したまま最新バージョンへアップグレードする。

$ mise upgrade jq
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
mise jq@1.8.0 will be pruned after 24h

Upgraded 1 tool:
  jq 1.8.0 → 1.8.2

mise.tomljq = "1.8"の記述自体は変わらない。アップグレード前の1.8.0はすぐには削除されず、24時間後に自動で削除される。ツール名を省略すると、mise.tomlに書かれた全ツールが対象になる。

–bumpでバージョン範囲自体を最新に更新する

jq = "1.7"のように、その範囲内で既に最新バージョンを使っている場合、mise outdatedは更新可能なツールの一覧を表示しない。

$ mise outdated
mise All tools are up to date
mise Newer versions are available outside the configured version ranges. Use `mise outdated --bump` to view them.

案内の通り--bumpを付けると、範囲外も含めた最新バージョンを確認できる。

$ mise outdated --bump
jq  1.7  1.7  1.8  1.8.2  /path/to/project/mise.toml

mise upgradeにも--bumpを付けると、mise.tomlのバージョン範囲自体を最新のものに書き換えたうえでアップグレードする。

$ mise upgrade jq --bump
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
mise jq@1.7 will be pruned after 24h

Upgraded 1 tool:
  jq 1.7 → 1.8.2

$ cat mise.toml
[tools]
jq = "1.8"

jq = "1.7"だったmise.tomlの記述がjq = "1.8"に書き換わり、指定していた桁数(この場合はマイナーバージョンまで)を保ったまま更新される。

事前に変更内容を確認する

--dry-runを付けると、実際にはアップグレードせずに変更内容だけを確認できる。

$ mise upgrade jq --bump --dry-run
Would schedule jq@1.7 for pruning after 24h
Would install jq@1.8.2
Would bump jq@1.8 in /path/to/project/mise.toml