工程開發
writing-bundler-tests avatar

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
在 GitHub 查看