在 Vite 8 之前的版本,會需要使用 vite-plugin-top-level-await 才能避免在編譯時出現錯誤。由於 Vite8 改用 rolldown 來取代 rollup 的緣故,此功能已有內建,就不需要使用此套件了。
內容
早期 Vite 在開發環境(dev)使用的是原生 ESM,但在生產環境(build)使用 Rollup。當目標瀏覽器較舊,不支援原生 TLA,Rollup 本身並不會主動幫你將 TLA 轉換為相容的非同步包裝格式(如立即調用的非同步函數 IIFE)。
為了讓開發和生產環境的行為一致,自 vite 8 開始便全面改用 Rolldown。 它是以 Rust 編寫的,並整合了 Oxc (The Oxidation Compiler)。Oxc 是一個效能極高的 JavaScript 解析與轉換器。因為 Rolldown 掌握了底層的 AST(抽象語法樹)操作,它可以在打包過程中直接辨識並轉換 TLA 語法,而不需要像 Rollup 那樣依賴外部 JavaScript 插件進行二次轉換。
參考資料
1. Top Level Await(TLA) in Rolldown
2. Support vite 8 – vite-plugin-top-level-await

