Vite 中的 ESBuild 集成通过 esbuild 打包器提供了快速的 TypeScript/JSX 转译和代码压缩。该系统在开发和生产阶段处理代码转换,支持自动 TypeScript 配置检测以及对现代 JavaScript 特性的支持。
有关 CSS 处理功能,请参阅 CSS 处理。有关整体构建过程的文档,请参阅 构建过程。
ESBuild 集成由几个关键组件组成,这些组件协同工作以高效地转换代码
来源: packages/vite/src/node/plugins/esbuild.ts79-301 packages/vite/src/node/plugins/esbuild.ts46-76
ESBuild 集成根据构建阶段的不同而运行方式不同
在开发过程中,ESBuild 专注于快速转译,不进行优化
| 选项 | 值 | 目的 |
|---|---|---|
目标 | 'esnext' | 现代开发环境无需转译 |
压缩 | false | 跳过压缩以加快构建速度 |
树摇 | false | 保留所有代码以进行调试 |
保留名称 | false | 允许名称混淆以加快处理速度 |
生产构建根据 config.build.minify === 'esbuild' 进行转译和优化
来源: packages/vite/src/node/plugins/esbuild.ts242-267 packages/vite/src/node/plugins/esbuild.ts380-467
该系统使用 tsconfck 库自动检测并应用 TypeScript 配置
系统遵循 TypeScript 选项的特定优先级顺序
transformWithEsbuildtsconfigRaw 提供来源: packages/vite/src/node/plugins/esbuild.ts105-180 packages/vite/src/node/plugins/esbuild.ts495-504
ESBuild 根据扩展名和配置的过滤器处理文件
| 扩展 | 加载器 | 描述 |
|---|---|---|
.ts | ts | TypeScript 文件 |
.tsx | tsx | TypeScript JSX 文件 |
.jsx | jsx | JavaScript JSX 文件 |
.mts, .cts | ts | 现代/CommonJS TypeScript |
.mjs, .cjs | js | 现代/CommonJS JavaScript |
来源: packages/vite/src/node/plugins/esbuild.ts87-103 packages/vite/src/node/plugins/esbuild.ts246
在生产构建期间,ESBuild 通过 buildEsbuildPlugin 应用额外的优化
对于库构建,ESBuild 处理辅助函数注入,以防止全局命名空间污染
IIFE_BEGIN_RE 模式匹配将辅助函数移入函数包装器内"use strict"; 指令之后注入辅助函数来源: packages/vite/src/node/plugins/esbuild.ts321-378 packages/vite/src/node/plugins/esbuild.ts303-319
该系统提供了增强的错误报告和开发时功能
当开发过程中 tsconfig.json 文件发生更改时,系统会自动
来源: packages/vite/src/node/plugins/esbuild.ts506-542 packages/vite/src/node/plugins/esbuild.ts469-475