SWC(Speedy Web Compiler)在功能定位上对标 Babel:语法降级(ES6+ 转ES5)、JSX/TSX 转译、装饰器支持,但用 Rust 实现,单核就能比 Babel 快近二十倍,多核并行后差距更大。Next.js 从 12 起完全用 SWC 替换 Babel,编译时间大幅下降。
它主要包括 transpile 与 minify 两部分,既可独立 CLI/库使用,也可作为 webpack 插件(swc-loader)替换 babel-loader。生态上 Babel 的自定义插件仍是它最大的缺口——SWC 的插件用 WASM/JS 编写,能力与数量都不及,所以重度依赖 Babel 插件链的项目迁移要评估成本。
// .swcrc —— SWC 配置(对应 .babelrc) { "jsc": { "parser": { "syntax": "typescript", "tsx": true }, "transform": { "react": { "runtime": "automatic" } // React 17 新 JSX 转换 }, "target": "es2015", // 降级到 ES6 "minify": { "compress": true, "mangle": true } }, "module": { "type": "es6" }, "sourceMaps": true } // webpack 中替换 babel-loader: // { test: /\.(js|ts)x?$/, use: { loader: 'swc-loader' } }