miseが溜め込むキャッシュを整理したい

miseはmise ls-remoteなどでツールのリモートバージョン一覧を取得するたびに、その結果をローカルにキャッシュする。このキャッシュを確認・削除するコマンドがmise cacheである。

キャッシュディレクトリの場所を確認する

mise cacheを引数なしで実行すると、キャッシュディレクトリのパスを表示する。

$ mise cache
/home/user/.cache/mise

mise cache pathでも同じ結果を得られる。

$ mise cache path
/home/user/.cache/mise

このディレクトリ配下には、ツールごとのサブディレクトリにリモートバージョン一覧のキャッシュファイルなどが保存されている。

$ find ~/.cache/mise -maxdepth 2
/home/user/.cache/mise
/home/user/.cache/mise/jq
/home/user/.cache/mise/jq/remote_versions-f6f83.msgpack.z
/home/user/.cache/mise/node
/home/user/.cache/mise/node/remote_versions-2fe3c.msgpack.z

mise cache clearでキャッシュを削除する

mise cache clearは、キャッシュディレクトリを丸ごと削除する。

$ mise cache clear
mise cache cleared

引数にツール名を渡すと、そのツールのキャッシュだけを削除できる。

$ mise cache clear jq
mise cache cleared for jq

mise cache clearにはccleanというエイリアスがあり、どちらを使っても同じ結果になる。

$ mise cache clean jq
mise cache cleared for jq

mise cache pruneで古いキャッシュだけ削除する

mise cache clearが全削除なのに対し、mise cache pruneは一定期間アクセスされていない古いキャッシュファイルだけを削除する。デフォルトでは30日間アクセスされていないファイルが対象になり、MISE_CACHE_PRUNE_AGE環境変数で日数を変更できる。

$ mise cache prune --verbose
INFO  pruning /home/user/.cache/mise/jq/remote_versions-f6f83.msgpack.z
INFO  cache pruned 1 files, 421 B

--dry-runを付けると、実際には削除せず対象ファイルだけを表示できる。

$ mise cache prune --dry-run --verbose
INFO  pruning /home/user/.cache/mise/jq/remote_versions-f6f83.msgpack.z
INFO  cache pruned 1 files, 421 B

mise cache pruneにはpというエイリアスがある。

mise cache taskは実験的機能

mise cache task <タスク名>は、タスクの出力キャッシュ(task artifact caching)を検査するサブコマンドである。mise.tomlに定義済みのタスク名を指定する。ただしこの機能自体が実験的機能で、mise settings experimental=trueを設定しないと利用できない。

$ mise cache task build
mise ERROR task artifact caching is experimental. Enable it with `mise settings experimental=true`

タスクのsources/outputsによる「ソースに変更がなければ再実行をスキップする」という通常のキャッシュ判定とは別の仕組みであり、今後仕様は変わる可能性がある。