使われなくなった古いバージョンが溜まっていく
【mise】mise uninstallでインストール済みツールを削除する
は削除したいツールとバージョンを自分で指定する必要がある。mise useでバージョンを切り替えるたびに、古いバージョンを手動でmise uninstallするのは手間がかかる。mise pruneを使うと、どの設定ファイルからも参照されなくなったバージョンをまとめて削除できる。
mise pruneの基本
jqのバージョンを1.7.1から1.8.2に切り替えた状態でmise pruneを実行する。
$ mise use jq@1.7.1
$ mise use jq@1.8.2
$ mise ls jq
jq 1.7.1
jq 1.8.2 /path/to/project/mise.toml 1.8.2
$ mise prune -y
mise pruned configuration links
mise jq@1.7.1 uninstall
mise jq@1.7.1 remove ~/.local/share/mise/installs/jq/1.7.1
mise jq@1.7.1 remove ~/.cache/mise/jq/1.7.1
mise jq@1.7.1 ✓ done
$ mise ls jq
jq 1.8.2 /path/to/project/mise.toml 1.8.2
mise.tomlはバージョン1.8.2のみを参照しており、1.7.1はどの設定ファイルからも必要とされていない。mise pruneはこの状態を検出し、1.7.1だけを削除する。mise useで上書きする前の1.7.1を明示的に指定する必要はない。-yは削除前の確認プロンプトへの応答を省略するオプションで、mise pruneに限らず多くのmiseコマンドで共通して使える。
削除前に対象を確認する
--dry-runを付けると、実際には削除せずに削除対象と理由を確認できる。
$ mise prune --dry-run
mise pruned configuration links [dryrun]
mise jq@1.7.1 is prunable: jq is required at 1.8.2 by /path/to/project/mise.toml
mise jq@1.7.1 [dryrun] uninstall
mise jq@1.7.1 [dryrun] remove ~/.local/share/mise/installs/jq/1.7.1
mise jq@1.7.1 [dryrun] remove ~/.cache/mise/jq/1.7.1
mise jq@1.7.1 [dryrun] ✓ done
jq is required at 1.8.2 by /path/to/project/mise.tomlという行から、なぜ1.7.1が削除対象になったのかが分かる。
事前に一覧だけを確認したい場合はmise ls --prunableを使う。
$ mise ls --prunable
jq 1.7.1
ツール名を指定して絞り込む
hyperfineなど他のツールもインストールされている状態で、jqだけをprune対象にしたい場合はツール名を指定する。
$ mise prune --dry-run jq
mise pruned configuration links [dryrun]
mise jq@1.7.1 is prunable: jq is required at 1.8.2 by /path/to/project/mise.toml
mise jq@1.7.1 [dryrun] uninstall
mise jq@1.7.1 [dryrun] remove ~/.local/share/mise/installs/jq/1.7.1
mise jq@1.7.1 [dryrun] remove ~/.cache/mise/jq/1.7.1
mise jq@1.7.1 [dryrun] ✓ done
hyperfineのバージョンには影響せず、指定したjqの不要なバージョンだけが対象になる。
\第一線のプログラマーの行動原理を学べる!/
