this.environment in Hooks
反饋
請在 Environment API 反饋討論區 提供反饋
在 Vite 6 之前,只有兩個可用環境:client 和 ssr。外掛開發者可以透過 resolveId、load 和 transform 鉤子中單個 options.ssr 引數,在外掛鉤子處理模組時區分這兩個環境。在 Vite 6 中,Vite 應用可以根據需要定義任意數量的命名環境。我們正在引入 this.environment 到外掛上下文中,以便在鉤子中與當前模組的環境進行互動。
影響範圍:Vite 外掛開發者
未來棄用計劃
this.environment 在 v6.0 中引入。options.ssr 的棄用計劃在未來的大版本中進行。屆時我們將建議外掛作者遷移到使用新 API。若要識別當前的用法,可在 vite 配置中將 future.removePluginHookSsrArgument 設定為 "warn"。
動機
this.environment 不僅允許外掛鉤子實現瞭解當前環境名稱,還可以訪問環境配置選項、模組圖資訊以及轉換流水線(environment.config、environment.moduleGraph、environment.transformRequest())。在上下文中提供環境例項,使得外掛開發者無需再依賴整個開發伺服器例項(通常在啟動時透過 configureServer 鉤子快取)。
遷移指南
對於現有外掛的快速遷移,請在 resolveId、load 和 transform 鉤子中,將 options.ssr 引數替換為 this.environment.config.consumer === 'server'。
import { Plugin } from 'vite'
export function myPlugin(): Plugin {
return {
name: 'my-plugin',
resolveId(id, importer, options) {
const isSSR = options.ssr
const isSSR = this.environment.config.consumer === 'server'
if (isSSR) {
// SSR specific logic
} else {
// Client specific logic
}
},
}
}為了實現更穩健的長期維護,外掛鉤子應透過細粒度的環境選項來處理 多環境支援,而不是依賴環境名稱。
