writing-bundler-tests
指導如何使用 itBundled 與 expectBundled 編寫 Bun bundler 測試,以驗證轉譯、壓縮及程式碼轉換的正確性。
簡介
本技能為測試 Bun 內部打包器 (bundler)、轉譯器 (transpiler) 與程式碼轉換邏輯提供了完整的框架。專為參與 Bun 運行時開發並需確保代碼打包過程(包括壓縮、搖樹優化 tree-shaking 與模組解析)在 ESM、CJS 與 IIFE 等格式下正確運作的開發者所設計。透過使用 itBundled 工具,開發者能系統性地對構建輸出、運行時行為及錯誤處理進行斷言,無需額外架設基礎設施。
-
協助驗證複雜的打包功能,例如無用代碼消除 (DCE)、壓縮(空白、識別符、語法)以及如標頭/頁尾注入等進階程式碼操作。
-
支援精確的運行時斷言,包括 stdout/stderr 模式比對、環境變數注入與退出代碼驗證,確保打包輸出在 Bun 或 Node.js 環境中符合預期行為。
-
允許對打包錯誤與警告進行細緻的驗證,讓測試人員能夠定義特定檔案路徑下的預期診斷輸出。
-
提供打包後的檢查機制,利用 API 鉤子 (onAfterBundle) 檢查檔案存在性、透過快照驗證內容有效性,以及以程式化方式驗證轉換結果。
-
具備強大的捕捉機制以進行精確的轉譯驗證,允許使用者在原始檔中嵌入 capture() 呼叫,以驗證中間值或邏輯流。
-
測試的主要入口點為 test/bundler/ 目錄,並使用 expectBundled.ts 輔助工具。
-
輸入配置涉及在 itBundled 測試宣告中定義虛擬檔案結構、進入點與特定的打包器旗標(如 target、format、sourceMap、splitting)。
-
測試檔案依類別組織,例如 banner、minify、cjs 或 splitting,可透過 BUN_BUNDLER_TEST_FILTER 等篩選器進行高效導航與執行。
-
預期輸出匹配包含字串字面量、正規表達式或詳細結構驗證用的快照測試。
-
務必使用 dedent 輔助工具以維持測試檔案內多行字串內容的可讀性,確保測試程式碼格式正確。
倉庫統計
- Star 數
- 89,434
- Fork 數
- 4,372
- Open Issue 數
- 6,661
- 主要語言
- Zig
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 下午01:07