esbuild 负责快的部分:dev 阶段的依赖预构建(把 node_modules 打成 ESM 单文件)、TS/JSX 转译、生产压缩;Rollup 负责稳的部分:生产打包——成熟的 tree-shaking、代码分割与插件生态。esbuild 用 Go 编写速度极快但打包能力和插件生态弱,Rollup 恰好互补。

开发时源码 transform 也走 esbuild,它只转译不做类型检查,所以仍需 tsc --noEmit 或 vue-tsc 把关类型。双引擎架构的代价是 dev 与 build 行为可能不一致(某些语法、装饰器处理不同),这正是 Rolldown(Rust 实现、兼容 Rollup 插件 API)要统一两端的原因。易错点:build.target 决定 esbuild 的语法降级程度;别指望 esbuild 报类型错误。追问:Rolldown-Vite 的现状与迁移收益。

export default { build: { target: 'es2020', minify: 'esbuild' } }