跳到内容

迁移到 Per-environment API

反馈

Environment API 反馈讨论中向我们提供反馈

多个来自 `ViteDevServer` 与模块图和模块转换相关的 API 已被移动到 `DevEnvironment` 实例中。

影响范围:`Vite 插件作者`

未来弃用

`Environment` 实例首次在 `v6.0` 中引入。`server.moduleGraph` 和其他现在位于环境中的方法计划在未来的主要版本中弃用。我们目前不建议弃用服务器方法。要识别您的用法,请在您的 Vite 配置中设置这些。

ts
future: {
  removeServerModuleGraph: 'warn',
  removeServerTransformRequest: 'warn',
}

动机

在 Vite v5 及之前,单个 Vite 开发服务器始终有两个环境(`client` 和 `ssr`)。`server.moduleGraph` 包含了来自这两个环境的混合模块。节点通过 `clientImportedModules` 和 `ssrImportedModules` 列表连接(但每个环境维护一个 `importers` 列表)。转换后的模块由一个 `id` 和一个 `ssr` 布尔值表示。这个布尔值需要传递给 API,例如 `server.moduleGraph.getModuleByUrl(url, ssr)` 和 `server.transformRequest(url, { ssr })`。

在 Vite v6 中,现在可以创建任意数量的自定义环境(例如 `client`、`ssr`、`edge` 等)。单个 `ssr` 布尔值已不再足够。为了避免将 API 更改为 `server.transformRequest(url, { environment })` 的形式,我们将这些方法移动到了环境实例中,从而允许它们在没有 Vite 开发服务器的情况下被调用。

迁移指南

  • `server.moduleGraph` -> `environment.moduleGraph`
  • `server.transformRequest(url, ssr)` -> `environment.transformRequest(url)`
  • `server.warmupRequest(url, ssr)` -> `environment.warmupRequest(url)`

根据 MIT 许可证发布。(083ff36d)