使用 --filter
標記,在多個套件中同時執行生命週期腳本
bun --filter <pattern> <script>
假設您有一個包含兩個套件的單一儲存庫:packages/api
和 packages/frontend
,兩個套件都有一個 dev
腳本,用於啟動本機開發伺服器。通常,您必須開啟兩個獨立的終端機標籤頁,切換目錄到每個套件目錄,然後執行 bun dev
cd packages/api
bun dev
# in another terminal
cd packages/frontend
bun dev
使用 --filter
,您可以同時在兩個套件中執行 dev
腳本
bun --filter '*' dev
兩個指令會並行執行,您會看到一個漂亮的終端機使用者介面,顯示它們各自的輸出
比對
--filter
接受一個模式,用於比對特定套件,可以按名稱或路徑比對。模式完全支援 glob 語法。
套件名稱 --filter <pattern>
名稱模式會根據在 package.json
中指定的套件名稱選取套件。例如,如果您有套件 pkga
、pkgb
和 other
,您可以使用 *
來比對所有套件,使用 pkg*
來比對 pkga
和 pkgb
,並提供套件的完整名稱來比對特定套件。
套件路徑 --filter ./<glob>
路徑模式會以 ./
開頭來指定,並會選取與模式相符目錄中的所有套件。例如,若要比對 packages
子目錄中的所有套件,您可以使用 --filter './packages/**'
。若要比對位於 pkgs/foo
中的套件,請使用 --filter ./pkgs/foo
。
工作區
篩選器會尊重您的 工作區設定:如果您有指定哪些套件是工作區一部分的 package.json
檔案,--filter
將會限制在這些套件中。此外,在工作區中,您可以使用 --filter
來執行位於工作區任何位置的套件中的指令碼
# Packages
# src/foo
# src/bar
# in src/bar: runs myscript in src/foo, no need to cd!
bun run --filter foo myscript
相依性順序
Bun 會在執行指令碼時尊重套件相依性順序。假設您有一個套件 foo
,它在您的工作區中相依於另一個套件 bar
,並且這兩個套件都有 build
指令碼。當您執行 bun --filter '*' build
時,您會注意到 foo
會在 bar
完成後才開始執行。