Hooks 中的 this.environment
意見回饋
請在環境 API 意見回饋討論提供您的意見
在 Vite 6 之前,只有兩種環境可用:client
和 ssr
。resolveId
、load
和 transform
中的單一 options.ssr
插件 Hook 參數,允許插件作者在插件 Hook 中處理模組時區分這兩種環境。在 Vite 6 中,Vite 應用程式可以根據需要定義任意數量的命名環境。我們在插件上下文中引入 this.environment
,以便在 Hook 中與目前模組的環境互動。
影響範圍:Vite 插件作者
未來棄用
this.environment
在 v6.0
中引入。計劃在 v7.0
中棄用 options.ssr
。屆時,我們將開始建議您將插件遷移到新的 API。若要識別您的使用情況,請在您的 vite 配置中將 future.removePluginHookSsrArgument
設定為 "warn"
。
動機
this.environment
不僅允許插件 Hook 實作知道目前的環境名稱,還可以存取環境配置選項、模組圖表資訊和轉換管道 (environment.config
、environment.moduleGraph
、environment.transformRequest()
)。在上下文中提供環境實例,可讓插件作者避免對整個開發伺服器的依賴 (通常在啟動時透過 configureServer
Hook 快取)。
遷移指南
對於現有的插件進行快速遷移,請在 resolveId
、load
和 transform
Hook 中將 options.ssr
參數替換為 this.environment.name !== 'client'
import { Plugin } from 'vite'
export function myPlugin(): Plugin {
return {
name: 'my-plugin',
resolveId(id, importer, options) {
const isSSR = options.ssr
const isSSR = this.environment.name !== 'client'
if (isSSR) {
// SSR specific logic
} else {
// Client specific logic
}
},
}
}
為了更健全的長期實作,插件 Hook 應使用精細的環境選項處理多個環境,而不是依賴環境名稱。