.pub-cache
内にあるパッケージの、最新版以外のバージョンを削除するツールを作りました。
pub.devのパッケージページはこちら → purge_pub_cache
背景
Dart/Flutterで開発していると、.pub-cache
に古いバージョンのパッケージがどんどん溜っていくのがなんか嫌。
Dart 2.4で、pub cache clean
というコマンドが実装されるらしいが、これは、有無を言わせず、全部パッケージを消してしまうものっぽい。
うまいこと整理する方法がありそうで見付からなかった(だいたい、全部削除してpub get
し直せばいいじゃない、という話になる)ので、自分で作った。実はもうあったらごめんなさい。
インストール
% [dart|flutter] pub global activate purge_pub_cache
使いかた
% [dart|flutter] pub global run purge_pub_cache [option...]
Options:
-h, --help Show this usage.
--version Show app version and exit.
-d, --directory=<path> Specify a path to handle as pub_cache directory.
-y, --yes Assume YES to confirm the deletion.
-q, --quiet No outputs (--yes is assumed to be set).
-n, --dry-run Dry-run. Show the packages to delete and exit.
ご存知のように、dartとflutterでは、それぞれデフォルトで使用する.pub-cacheディレクトリの場所が違います。
activeteコマンドから推奨されるように、.../.pub-cache/bin
にパスを通して起動しても良いのだけれど、それだと、dartとflutter、それぞれにインストールした時に使いわけが面倒になりそう。
なので、dart、または素のままpub global run
で起動すれば、${HOME}/.pub-cache
が、flutterから起動すれば、${FLUTTER_ROOT}/.pub-cache
が操作対象になるということで。
もちろん、-d
で、好きなパスを指定しても構わないです。
実行すると、下記のように、削除対象になるパッケージとバージョンのリストが表示されて、最終確認を求められるので、問題なければy
する、という感じです。
% pub global run purge_pub_cache
Using pub-cache directory: /home/foo/.pub-cache
Packages to be deleted:
fooPackage: 0.0.1, 0.0.2
barPackage: 1.8.0
Are you sure to delete these 3 packages? [y/N]: y
Deleting 3 packages... done.
もしかして、誰もこんなこと気にしていない?