--filter(または -F)フラグは、モノレポでパターンでパッケージを選択するために使用されます。パターンはパッケージ名またはパッケージパスの一致に使用でき、完全な glob 構文をサポートしています。
現在、--filter は bun install と bun outdated でサポートされており、複数のパッケージでスクリプトを一度に実行するためにも使用できます。
一致
パッケージ名 --filter <pattern>
名前のパターンは、package.json で指定されているパッケージ名に基づいてパッケージを選択します。例えば、pkg-a、pkg-b、other というパッケージがある場合、* ですべてのパッケージを一致させ、pkg* で pkg-a と pkg-b のみを一致させ、パッケージの完全な名前を指定して特定のパッケージを一致させることができます。
パッケージパス --filter ./<glob>
パスのパターンは、パターンを ./ で始めることで指定し、パターンに一致するディレクトリ内のすべてのパッケージを選択します。例えば、packages のサブディレクトリ内のすべてのパッケージを一致させるには、--filter './packages/**' を使用します。packages/foo にあるパッケージを一致させるには、--filter ./packages/foo を使用します。
bun install と bun outdated
bun install と bun outdated の両方が --filter フラグをサポートしています。
bun install はデフォルトで、モノレポ内のすべてのパッケージの依存関係をインストールします。特定のパッケージの依存関係のみをインストールするには、--filter を使用します。
./packages 配下にワークスペース pkg-a、pkg-b、pkg-c を持つモノレポがある場合。
# `pkg-c` 以外のすべてのワークスペースの依存関係をインストール
bun install --filter '!pkg-c'
# `./packages` 内のパッケージの依存関係をインストール(`pkg-a`、`pkg-b`、`pkg-c`)
bun install --filter './packages/*'
# 上記と同じだが、ルート package.json を除外
bun install --filter '!./' --filter './packages/*'同様に、bun outdated はモノレポ内のすべてのパッケージの古い依存関係を表示し、--filter を使用してコマンドをパッケージのサブセットに制限できます。
# `pkg-` で始まるワークスペースの古い依存関係を表示
bun outdated --filter 'pkg-*'
# ルート package.json のみを表示
bun outdated --filter './'これらのコマンドの詳細については、bun install と bun outdated を参照してください。
--filter でスクリプトを実行する
--filter フラグを使用して、複数のパッケージでスクリプトを一度に実行します。
bun --filter <pattern> <script>packages/api と packages/frontend という 2 つのパッケージを持つモノレポがあり、両方にローカル開発サーバーを起動する dev スクリプトがあるとします。通常、2 つの別のターミナルタブを開き、各パッケージディレクトリに cd で移動し、bun dev を実行する必要があります。
cd packages/api
bun dev
# 別のターミナルで
cd packages/frontend
bun dev--filter を使用すると、両方のパッケージで dev スクリプトを一度に実行できます。
bun --filter '*' dev両方のコマンドが並列で実行され、それぞれの出力を示す美しいターミナル UI が表示されます。
ワークスペースでスクリプトを実行する
フィルターは ワークスペース設定 を尊重します。ワークスペースの一部であるパッケージを指定する package.json ファイルがある場合、--filter はこれらのパッケージのみに制限されます。また、ワークスペース内では、--filter を使用して、ワークスペース内のどこにあるパッケージでもスクリプトを実行できます。
# パッケージ
# src/foo
# src/bar
# src/bar で: src/foo で myscript を実行、cd は不要!
bun run --filter foo myscript依存関係の順序
Bun はスクリプトを実行する際に依存関係の順序を尊重します。ワークスペース内にパッケージ foo が別のパッケージ bar に依存しており、両方のパッケージに build スクリプトがあるとします。bun --filter '*' build を実行すると、foo は bar が完了するまで実行されないことに気づきます。