跳轉至

建立 2026-09-16 更新 2026-09-16

外掛系統

Vite 本身核心功能精簡,許多進階能力(框架支援、特殊檔案格式、自訂轉換邏輯)都透過外掛(plugin)擴充。Vite 的外掛介面是 Rollup 外掛介面的擴充版本,因此大多數 Rollup 外掛也能直接在 Vite 中使用。

為什麼需要外掛

Vite 開發伺服器與正式打包,底層分別由不同引擎驅動(開發時用原生 ESM + esbuild,打包時用 Rollup/Rolldown)。外掛系統讓同一份邏輯,可以同時在這兩種模式下運作一致,例如:

  • 讓 Vite 認得 .vue.jsx 等框架特有的檔案格式。
  • 在打包過程中轉換或注入程式碼(例如自動注入版本號、壓縮特定資源)。
  • 提供更精準的 HMR 邊界,讓框架元件狀態在修改後能被保留。

常用官方與社群外掛

外掛 用途
@vitejs/plugin-react 支援 React 的 JSX 轉譯與 Fast Refresh(React 的 HMR 實作)
@vitejs/plugin-vue 支援 Vue 單檔元件(.vue)的編譯
@vitejs/plugin-legacy 為不支援原生 ESM 的舊版瀏覽器產生相容版本
vite-plugin-svgr 讓 React 專案可以把 SVG 當作元件直接 import
vite-tsconfig-paths tsconfig.json 中設定的路徑別名在 Vite 中生效

安裝方式都是標準的 npm 套件安裝,再於 vite.configplugins 陣列中註冊即可(範例見〈設定檔 vite.config〉)。

外掛的基本結構

一個最簡單的 Vite 外掛,其實就是一個回傳特定形狀物件的函式:

function myPlugin() {
  return {
    name: 'my-plugin',              // 除錯訊息會用到,建議取有意義的名稱
    transform(code, id) {
      // 在模組被載入時,可以檢查/修改程式碼內容
      if (id.endsWith('.special.js')) {
        return code.replace('__BUILD_TIME__', new Date().toISOString())
      }
    },
  }
}

export default defineConfig({
  plugins: [myPlugin()],
})

常見的擴充點(hook)包括 transform(轉換模組內容)、resolveId(自訂模組解析規則)、configureServer(客製化開發伺服器行為)等。多數專案不需要自己寫外掛,但了解這個結構,有助於讀懂第三方外掛原始碼、排查問題。

推薦影音

動手寫一個 Vite 外掛

簡述:完整示範從零開始撰寫一個 Vite 外掛,包含常用 hook 的用法與除錯方式,適合想深入了解外掛機制、或需要客製化建置流程的讀者。

相關資料