Vite 中 minify 应按需选择:开发预发用 esbuild(快,需手动 drop console),正式发布用 terser(压缩率高、默认清理日志);真正影响体积的是代码拆分、资源优化等前置措施。

直接在 vite.config.ts 的 build.minify 选项中指定即可:设为 'esbuild' 侧重速度,设为 'terser' 侧重压缩率和日志清理能力。两者不是互斥替代,而是按需取舍——关键看项目阶段和发布要求。
esbuild:快,但需手动删 console
Vite 默认使用 esbuild 压缩,构建速度比 terser 快 20–40 倍,适合开发预发、CI 快速验证或对体积不敏感的场景。但它默认保留 console 和 debugger,必须显式配置才能移除:
build: { minify: 'esbuild', esbuild: { drop: ['console', 'debugger'] } }- 压缩率略低(通常只差 1%–2%),但对多数项目影响极小
- 不支持细粒度控制(如保留特定注释、防止
Infinity被转成1/0)
terser:慢一点,但更可控、更干净
当你需要彻底剥离调试信息、兼容老环境、或追求极限体积时,选 terser。它支持深度定制,且默认就移除 console(无需额外配置):
build: { minify: 'terser', terserOptions: { compress: { drop_console: true, drop_debugger: true }, format: { comments: false } } }- 需单独安装:
npm install -D terser(Vite 2.6+ 要求) - 可开启多遍压缩(
passes: 2)进一步减小体积,代价是构建时间上升
怎么选?看这三点
不必纠结“哪个更好”,而是匹配实际需求:
- 日常构建、提测包、灰度发布 → 用
esbuild + drop,省时间不妥协安全 - 正式上线、审计合规、超大单页应用 → 切
terser,确保无日志泄露、体积最小化 - 团队 CI 流程中可分环境配置:开发分支用 esbuild,release 分支自动切 terser
顺便提醒:别只盯 minify
真正影响最终体积和加载性能的,往往不是压缩器本身,而是前置动作:
- 先用
rollup-plugin-visualizer看清哪些模块占体积大 - 配
manualChunks拆分 vendor,提升长期缓存命中率 - 图片、字体等静态资源用
vite-plugin-imagemin或 CDN 托管 - 第三方库尽量用 ES 版本(如
lodash-es),避免全量引入


















