知海

环境级 API 迁移

vite-main升级与迁移

环境级 API 迁移

::: tip 反馈
请在 Environment API feedback discussion 给我们反馈

ViteDevServer 中多个与模块图(module graph)和模块转换(modules transforms)相关的 API 已迁移到 DevEnvironment 实例上。

影响范围:Vite Plugin Authors warning 未来弃用警告
Environment 实例在 v6.0 首次引入。对 server.moduleGraph 以及其他现已迁移至环境实例的方法的弃用计划将在未来的主版本中进行。我们目前不推荐立即从 server 方法迁移。为了识别你的使用情况,请在 vite 配置中进行如下设置:

ts 复制代码
future: {
  removeServerModuleGraph: 'warn',
  removeServerReloadModule: 'warn',
  removeServerPluginContainer: 'warn',
  removeServerHot: 'warn',
  removeServerTransformRequest: 'warn',
  removeServerWarmupRequest: 'warn',
}

:::

动机

在 Vite v5 及更早版本中,单个 Vite dev server 始终包含两个环境(clientssr)。server.moduleGraph 中混合了来自这两个环境的模块。节点通过 clientImportedModulesssrImportedModules 列表连接(但每个节点只维护一个 importers 列表)。转换后的模块由 idssr 布尔值表示。这个布尔值需要传递给 API,例如 server.moduleGraph.getModuleByUrl(url, ssr)server.transformRequest(url, { ssr })

在 Vite v6 中,现在可以创建任意数量的自定义环境(clientssredge 等)。单个 ssr 布尔值已经不够用了。我们没有将 API 改为 server.transformRequest(url, { environment }) 这样的形式,而是将这些方法迁移到环境实例上,使其可以在没有 Vite dev server 的情况下被调用。

迁移指南

  • 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

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。