2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dart/Flutterの.pub-cacheから、古いパッケージを削除する

Last updated at Posted at 2021-08-06

.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.

もしかして、誰もこんなこと気にしていない?

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?