一、SWC 到底是什么?
官方定位是:
Rust-based platform for the Web
拆开讲就是:
- Rust 写的
- 面向 Web 构建
- 提供编译、转译、压缩等能力
核心能力包括:
- TS → JS 转译
- JSX → JS
- ESNext → ES5
- 代码压缩(minify)
- Tree shaking
- 插件系统
二、为什么 SWC 会流行
因为一个现实问题:
Babel 太慢了
Babel 是 JS 写的,本质是 AST 解析 + 转换。
当项目变大:
- 几千个模块
- 大量 TS
- 大量 JSX
编译时间会指数级变慢。
而 SWC 用 Rust:
- 多线程
- 原生执行
- 零 GC 开销
- 内存更可控
在真实项目里:
- Babel 构建 60 秒
- SWC 可能 5~8 秒
三、SWC 使用
Next.js
Next.js 12 之后默认用 SWC 替代 Babel。
Vite
Vite 内部依赖 esbuild(也是 Go 写的),但很多生态已经开始支持 SWC 插件。
Turbopack
Turbopack 是 Vercel 做的新一代打包器,底层也是 Rust + SWC 体系。
四、SWC 和 Babel 的本质区别
| 维度 | Babel | SWC |
|---|---|---|
| 语言 | JavaScript | Rust |
| 执行方式 | 单线程 | 多线程 |
| 性能 | 慢 | 极快 |
| 插件生态 | 成熟 | 逐渐完善 |
| 适合 | 灵活定制 | 高性能场景 |
五、SWC 在构建体系中的位置
现代前端构建大概分三层:
1. 代码转换(Compiler) - Babel - SWC - esbuild
2. 模块打包(Bundler) - Webpack - Vite - Turbopack
3. 运行时优化 - Tree shaking - Code splitting - Minify
SWC 是第一层:编译器
六、从架构视角看 SWC 的意义
SWC 的出现其实是一个趋势信号:
前端工具链正在从 JS 迁移到系统语言(Rust / Go)

