【Dart】Pubyでディスクスペース節約術

はじめに

pubyは、現在のディレクトリ内のすべてのプロジェクトでコマンドを実行することができるパッケージです。モノレポを簡単に扱うことができます。以下のようなメリットが上げられてます。

メリット:

  • 設定不要で、どこでもpubyを実行可能
  • puby linkを使ってpub getを最大5倍速く実行
  • puby cleanでディスクスペースを節約(70%削減できました!)
  • すべてのプロジェクトレベルのpubコマンドをサポート
  • puby execですべてのプロジェクトで任意のコマンドを実行
  • プロジェクトエンジン(dart、flutter、fvm)を自動的に判断
  • 一般的なdart/flutterコマンドの便利なショートカット
  • CIでの使用に適した組み合わせた終了コード
  • プロジェクトごとのコマンドの除外設定

簡単な使い方

インストール:

dart pub global activate puby

使用方法:

以下を実行することで、実行ディレクトリ以下の全てのプロジェクトに対して、再帰的に「flutter XXX」を実行してくるイメージですね。

依存関係を取得

puby get

「flutter pub get」を全てのプロジェクトに対して、再帰的に実行する

puby cleanの利用

puby clean

「flutter pub clean」を全てのプロジェクトに対して、再帰的に実行する。
WIndowsのFlutterプロジェクト置き場で実行したら、96.2GBが26.0GBになりました!(まあ、使っているプロジェクトは再度ビルドするので、大きくなりますが。)

puby linkの利用

puby linkを使うと、現在のディレクトリ内のすべてのプロジェクトで必要な依存関係がカタログ化され、キャッシュされます。その後、すべてのプロジェクトで pub get –offline で処理を並行して実行できます。

puby execの利用

puby execで任意のコマンドを実行できますが、相対パスが機能しないことに注意してください。代わりに絶対パスを使用します。

puby exec $PWD/foo.sh

Q&A

Q: puby linkとは何ですか?

A: puby linkは、すべてのプロジェクトで必要な依存関係をカタログ化してキャッシュし、その後、すべてのプロジェクトでpub get –offlineを並行して実行できるコマンドです。大規模なモノレポで非常に便利です。

Q: puby execの使い方は?

A: puby execでは、現在のディレクトリ内のすべてのプロジェクトで任意のコマンドを実行できます。ただし、相対パスは機能しないため、絶対パスを使用してください。

終わりに

pubyは、現在のディレクトリ内のすべてのプロジェクトでコマンドを実行できる便利なパッケージです。設定不要で使用でき、モノレポの扱いが容易になります。また、puby linkを使うと、pub getを最大5倍速く実行でき、ディスクスペースの節約も可能です。

便利なショートカットやプロジェクトごとのコマンドの除外設定も提供しており、開発効率が向上します。大規模なプロジェクトや複数のプロジェクトを一度に扱う場合に特に有益です。

pubyを使って開発プロセスを簡素化し、時間とリソースを節約しましょう。

参考