前端工程化 词条目录
前端Wiki/词条/SWC 编译器

SWC 编译器

定义用 Rust 编写的 JS/TS 编译与压缩器,可看作提速版 Babel,Next.js 的默认编译引擎

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 插件链的项目迁移要评估成本。

JavaScript
// .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' } }
⚠ 常见误区
🔗 相关词条Babel 做了什么polyfill 与 browserslist
← 返回来源章节Babel 做了什么