Babel、SWC、Terser、esbuild 各自负责什么?为什么现在推崇 SWC/esbuild?
| 工具 | 语言 | 职责 |
|---|---|---|
| Babel | JS | 语法降级(ESNext→ES5)、polyfill、JSX 转换,插件生态极丰富 |
| SWC | Rust | 同 Babel 的转译能力,但快 10-100x,Next.js 默认用它 |
| Terser | JS | 代码压缩/混淆(生产 JS 压缩) |
| esbuild | Go | 转译+打包+压缩一体,极快,Vite 开发期用它 |
为什么推崇 Rust/Go 系:Babel 是 JS 写的,单线程、慢;SWC(Rust)/esbuild(Go)编译速度数量级提升,大型项目构建/启动从分钟级降到秒级。
现状:Vite 开发用 esbuild、Next.js 用 SWC 做转译;生产压缩仍常用 Terser(压缩率略好)或 esbuild 的压缩(更快)。