Vite 的开发环境采用按需编译和原生 ES 模块驱动的架构,与传统打包工具(如 Webpack)有本质区别。以下是其编译流程及对不同文件类型的处理方式:

一、Vite 开发环境核心原理

  1. 启动服务器: Vite 启动时不进行全量编译,而是创建一个 HTTP 服务器,监听文件变化。

  2. 浏览器优先原则: 浏览器直接通过 ES 模块的 import 语句请求文件(如 import './main.ts'),Vite 拦截这些请求并实时编译。

  3. 按需编译: 只有当浏览器请求某个模块时,Vite 才会对其进行编译(如 TS 转 JS、Less 转 CSS),并返回处理后的结果。

二、不同文件类型的处理流程

1. Less 文件处理

  • 请求拦截:当浏览器请求 .less 文件时,Vite 拦截该请求。
  • 编译:使用 less 编译器将 Less 转换为 CSS。
  • 注入:将 CSS 通过 JavaScript 动态注入到页面的 <style> 标签中(支持 HMR 热更新)。

2. TS 文件处理

  • 请求拦截:拦截 .ts 文件请求。
  • 编译:使用 esbuild(速度极快)将 TS 转换为 JS,仅进行语法转换(不做类型检查)。
  • 类型检查:类型检查由独立进程(如 VSCode 插件或 tsc --watch)完成,不阻塞开发服务器。