加速你的 Bun 並行開發:bun-tasks 全攻略
如果你在 Bun 項目裏需要同時運行多個腳本,又不想為兼容性煩心,bun-tasks 會是最順手的選擇。這個專為 Bun 設計的並行任務運行器,幫你在一條命令中啓動多個任務、智能合併環境變量,並自動識別 package.json 中的腳本。只要先確認環境裏 bun --version 可用,就能即刻體驗 Bun 原生的多任務流程。
為什麼選擇 bun-tasks
- 專注 Bun 生態:完全基於 Bun 運行時開發,無需 Node 兼容層,安裝配置更輕鬆。
- 直觀的命令分隔符:使用
:::將多個命令串聯,Bun 會按原樣保留引號和空格,避免 Shell 干擾。 - 靈活的環境變量注入:全局
--args/-a與命令級參數可疊加,重複鍵以命令級優先生效。 - 自動腳本映射:直接寫腳本名稱,內部會自動轉換成
bun run <script>,無需重複輸入 Bun。 - 原汁原味的輸出:開啓
--raw/-r時將直接繼承子進程的標準輸出,對於 Parcel 等需要保留進度條和顏色的工具尤為友好。 - 可編程接口:導出的
BunTasksCLI類不會在import時執行,方便集成到自定義腳本或服務。
快速上手
-
安裝到項目
bun add -D bun-tasks -
在
package.json中配置腳本{ "scripts": { "dev": "bun-tasks --args NODE_ENV=dev api ::: docs --args PORT=4000" } } -
定義被調用的子命令
{ "scripts": { "api": "bun run src/api.ts", "docs": "bun run docs:watch", "dev": "bun-tasks api ::: docs" } } -
啓動並行任務
bun run dev
運行後,多個任務會帶着編號前綴同時輸出,日誌來源一目瞭然。
常用參數速覽
--help,-h:查看幫助。--version,-v:顯示當前版本。--args,-a:注入環境變量,支持全局或單個命令。--raw,-r:繼承子進程輸出,保持顏色與進度條效果。
程序化調用示例
import { BunTasksCLI } from "bun-tasks";
const cli = new BunTasksCLI();
await cli.run(["echo", "hello", ":::", "echo", "world"], {
stdoutPrefix: (index) => `[job-${index}]`,
mirrorStderrToStdout: true,
});
該示例演示如何在自定義腳本中複用 bun-tasks 的核心邏輯,輸出前綴和錯誤鏡像都能靈活控制。
開發與測試建議
bun install
bun test --coverage
提示:Bun 在原生 Windows 上的覆蓋率輸出仍在完善中,如遇異常可暫時去掉 --coverage 或在 WSL 中運行。
致謝
本項目部分代碼由 GPT-5-Codex 協助完成。
準備好給 Bun 任務管理提速了嗎?立即下載並關注最新進展:
- npm:https://www.npmjs.com/package/bun-tasks
- GitHub:https://github.com/gxy5202/bun-tasks
讓 bun-tasks 幫你保持 Bun 的速度與並行效率!