跳轉到內容

遷移至多環境 API

反饋

請在 Environment API 反饋討論區 提供反饋

ViteDevServer 中與模組圖和模組轉換相關的多個 API 已遷移至 DevEnvironment 例項中。

影響範圍:Vite 外掛開發者

未來棄用計劃

Environment 例項最早在 v6.0 中引入。server.moduleGraph 以及其他現已歸入環境的方法計劃在未來的主版本中棄用。我們目前尚不建議停止使用伺服器方法。若要識別你程式碼中的相關用法,請在 vite 配置中進行設定。

ts
future: {
  removeServerModuleGraph: 'warn',
  removeServerReloadModule: 'warn',
  removeServerPluginContainer: 'warn',
  removeServerHot: 'warn',
  removeServerTransformRequest: 'warn',
  removeServerWarmupRequest: 'warn',
}

動機

在 Vite v5 及更早版本中,單個 Vite 開發伺服器始終擁有兩個環境(clientssr)。server.moduleGraph 混合了來自這兩個環境的模組。節點透過 clientImportedModulesssrImportedModules 列表連線(但每個模組維護一個共同的 importers 列表)。轉換後的模組由 id 和一個 ssr 布林值表示。該布林值必須傳遞給 API,例如 server.moduleGraph.getModuleByUrl(url, ssr)server.transformRequest(url, { ssr })

在 Vite v6 中,現在可以建立任意數量的自定義環境(clientssredge 等)。單一的 ssr 布林值已不再夠用。我們沒有將 API 修改為 server.transformRequest(url, { environment }) 這種形式,而是將這些方法移動到了環境例項中,從而允許在沒有 Vite 開發伺服器的情況下呼叫它們。

遷移指南

  • server.moduleGraph -> environment.moduleGraph
  • server.reloadModule(module) -> environment.reloadModule(module)
  • server.pluginContainer -> environment.pluginContainer
  • server.transformRequest(url, ssr) -> environment.transformRequest(url)
  • server.warmupRequest(url, ssr) -> environment.warmupRequest(url)
  • server.hot -> server.client.environment.hot