菜单

配置系统

相关源文件

本文档涵盖了 Vite 的配置系统,包括配置文件的解析、合并、类型定义以及特定于环境的设置。配置系统是自定义 Vite 在开发、构建和预览模式下行为的基础。

有关特定配置选项的信息,请参阅各个配置选项页面。有关插件开发配置钩子,请参阅 插件系统

配置文件的解析

Vite 使用明确的搜索和加载流程自动解析配置文件。该系统支持多种文件格式,并提供灵活的加载机制。

支持的配置文件

配置系统在项目根目录下按特定优先级搜索配置文件。`loadConfigFromFile` 函数使用基于文件类型和环境能力的各种策略来处理加载过程。

来源: docs/config/index.md6-29

配置加载策略

Vite 提供了三种不同的加载策略来处理不同的环境和需求

Bundle 策略 (默认): 使用 `esbuild` 将配置打包到临时文件中。此方法支持 TypeScript 和复杂的导入场景,但在 monorepo 环境中可能存在问题。

Runner 策略: 使用模块运行器进行即时转换,无需创建临时文件。通过 `--configLoader runner` 标志指定。

Native 策略: 使用环境的原生运行时来处理纯 JavaScript 配置。通过 `--configLoader native` 标志指定。

来源: docs/config/index.md25-29

配置类型

配置系统定义了几个关键的 TypeScript 接口,用于表示配置处理的不同阶段。

核心配置接口

`UserConfig` 接口表示用户提供的配置,而 `ResolvedConfig` 包含最终处理过的配置以及其他实用工具。`InlineConfig` 扩展了 `UserConfig` 以便与 API 函数一起进行编程使用。

来源: docs/guide/api-javascript.md75-87 packages/vite/src/node/__tests__/config.spec.ts5-6

配置解析流程

配置解析流程通过几个阶段将用户配置转换为完整的解析配置对象。

解析流程

`resolveConfig` 函数协调此过程,接受一个 `InlineConfig` 对象并返回一个 `ResolvedConfig`。该过程包括插件钩子执行、验证和默认值分配。

来源: docs/guide/api-javascript.md291-305 packages/vite/src/node/__tests__/config.spec.ts7

配置合并系统

Vite 实现了一个复杂的配置合并系统,可以处理复杂的对象结构和不同配置属性的特殊情况。

合并逻辑

合并系统处理 `resolve.alias`、`envPrefix`、`assetsInclude` 和 `ssr.noExternal` 等属性的特殊情况。对于数组,它会连接基础配置和覆盖配置的值。对于 `ssr.noExternal`,布尔值 `true` 具有最高优先级。

来源: packages/vite/src/node/__tests__/config.spec.ts12-276 docs/guide/api-javascript.md307-342

特殊合并规则

配置合并器对某些属性实施了特定规则:

  • Alias 配置:将对象和数组格式规范化为一致的数组结构。
  • Environment Prefix:将字符串转换为数组并连接所有值。
  • Assets Include:在保留 RegExp 对象的同时合并模式。
  • SSR noExternal:布尔值 `true` 始终优先于数组。
  • Server Instances:保留服务器实例的对象标识。

来源: packages/vite/src/node/__tests__/config.spec.ts13-54 packages/vite/src/node/__tests__/config.spec.ts168-190 docs/guide/api-javascript.md307-342

环境和模式配置

Vite 的配置系统支持特定于环境的设置和基于模式的条件配置。

条件配置

`defineConfig` 辅助函数同时支持对象和函数形式。函数形式接收一个 `ConfigEnv` 对象,其中包含当前命令和模式的上下文信息,从而实现条件配置逻辑。

来源: docs/config/index.md62-85 docs/config/index.md87-100

环境变量

配置系统通过 `loadEnv` 实用程序与环境变量加载集成。为了保持确定性行为,环境变量在配置评估期间不会自动加载。

来源: docs/config/index.md102-123 docs/guide/api-javascript.md364-378

插件配置集成

配置系统提供了钩子,供插件修改配置并响应配置更改。

插件配置钩子

`config` 钩子允许插件在解析前修改配置,而 `configResolved` 提供对最终配置的访问。这些钩子使插件能够根据配置设置调整其行为。

来源: docs/guide/api-plugin.md177-213 docs/guide/api-plugin.md214-247

高级配置模式

异步配置

Vite 支持异步配置函数,这些函数可以在配置解析期间执行异步操作。

来源: docs/config/index.md87-100

TypeScript 配置支持

该系统通过 `defineConfig` 辅助函数和类型注解提供完整的 TypeScript 支持,包括类型检查和 IntelliSense。

来源: docs/config/index.md31-60

调试配置

对于调试配置问题,特别是使用默认的 bundle 加载器时,VS Code 用户可以配置源映射解析,以便在配置文件中设置断点进行调试。

来源: docs/config/index.md125-140