本文档涵盖了 Vite 的核心架构,包括配置系统、服务器创建过程、插件容器系统和环境管理。它侧重于实现 Vite 开发和构建功能的基础构建模块。
有关插件系统钩子和扩展机制的信息,请参阅插件系统。有关热模块替换(HMR)和中间件等开发服务器特定功能,请参阅开发服务器。
Vite 的核心架构围绕三个主要系统:配置解析、环境管理和插件编排。该架构通过统一的插件系统支持开发(serve 命令)和生产(build 命令)模式。
高层架构
来源:packages/vite/src/node/config.ts544-635 packages/vite/src/node/server/index.ts254-418 packages/vite/src/node/build.ts84-284
配置系统将用户配置转换为所有其他系统使用的已解析配置。`resolveConfig` 函数是此过程的中央协调器。
配置解析流程
`resolveConfig` 函数执行几项关键任务:
来源:packages/vite/src/node/config.ts1039-1257 packages/vite/src/node/config.ts771-842 packages/vite/src/node/config.ts159-161
`createServer` 函数通过初始化环境、插件容器和中间件系统来协调 Vite 开发服务器的创建。
服务器初始化流程
服务器创建的关键方面:
来源:packages/vite/src/node/server/index.ts425-429 packages/vite/src/node/server/index.ts431-540 packages/vite/src/node/server/index.ts514-529
插件容器系统提供了一个兼容 Rollup 的插件执行环境。它支持统一插件容器(出于向后兼容性)和每个环境的插件容器。
插件容器架构
插件容器实现了 Rollup 插件 API,并包含 Vite 特有的扩展。
来源:packages/vite/src/node/server/pluginContainer.ts578-629 packages/vite/src/node/server/pluginContainer.ts1217-1305 packages/vite/src/node/server/pluginContainer.ts630-699
Vite 的环境系统允许不同的执行上下文(客户端、SSR、构建)拥有独立的插件实例、模块图和配置,同时共享通用基础设施。
环境层级
环境特性
来源:packages/vite/src/node/baseEnvironment.ts1-45 packages/vite/src/node/server/environment.ts1-50 packages/vite/src/node/config.ts251-299
模块图在每个环境中跟踪模块关系和转换。请求处理通过插件容器流,以转换和解析模块。
请求处理流程
关键处理步骤:
来源:packages/vite/src/node/server/transformRequest.ts78-156 packages/vite/src/node/server/middlewares/transform.ts74-252 packages/vite/src/node/server/moduleGraph.ts1-200