close
logologo
指南
配置
插件
API
社区
版本
更新日志
Rsbuild 0.x 文档
English
简体中文
指南
配置
插件
API
社区
更新日志
Rsbuild 0.x 文档
English
简体中文
logologo

开始

介绍
快速上手
功能导航
名词解释

框架

React
Vue
Preact
Svelte
Solid

基础

命令行工具
开发服务器
构建产物
静态资源
HTML
JSON
Wasm
TypeScript
Web Workers
部署静态站点
升级 Rsbuild

配置

配置 Rspack
配置 Rsbuild
配置 SWC

样式

CSS
CSS Modules
CSS-in-JS
Tailwind CSS v4
Tailwind CSS v3
UnoCSS

进阶

路径别名
环境变量
模块热更新
浏览器范围
浏览器兼容性
模块联邦
多环境构建
服务端渲染(SSR)
测试

优化

代码拆分
产物体积优化
提升构建性能
静态资源内联

迁移

从 Rsbuild 0.x 迁移
webpack
Create React App
Vue CLI
Vite
Vite 插件
Modern.js Builder

调试

开启调试模式
构建性能分析
使用 Rsdoctor

常见问题

通用类问题
功能类问题
异常类问题
热更新问题
📝 在 GitHub 上编辑此页
上一页配置 Rsbuild
下一页CSS

#配置 SWC

SWC(Speedy Web Compiler)是基于 Rust 语言编写的高性能 JavaScript 和 TypeScript 转译和压缩工具。SWC 提供与 Babel 和 Terser 相似的能力,在单线程上它比 Babel 快 20 倍,在四核上它比 Babel 快 70 倍。

Rsbuild 默认启用 SWC 的以下功能:

  • 通过 Rspack 的 builtin:swc-loader 来转换 JavaScript 和 TypeScript 代码,它是 swc-loader 的 Rust 版本。
  • 通过 Rspack 的 SwcJsMinimizerRspackPlugin 来压缩 JavaScript 代码。

#Loader 选项

builtin:swc-loader 的选项与 JS 版本的 swc-loader 一致。Rsbuild 暴露了一些选项来配置 builtin:swc-loader:

  • tools.swc:用于配置 builtin:swc-loader 的选项。
  • source.include:用于指定需要被 SWC 编译的文件。
  • source.exclude:用于排除不需要被 SWC 编译的文件。

下面是一些示例:

#注册 SWC 插件

tools.swc 可以用于注册 SWC 的 Wasm 插件,比如注册 @swc/plugin-styled-components:

export default {
  tools: {
    swc: {
      jsc: {
        experimental: {
          plugins: [['@swc/plugin-styled-components', {}]],
        },
      },
    },
  },
};

你可以通过 awesome-swc 仓库查看社区中可用的 SWC 插件。

#SWC 插件版本

请注意,SWC 的插件仍然是一个实验性功能,目前 SWC 的 Wasm 插件是不向后兼容的,SWC 插件的版本与 Rspack 依赖的 swc_core 版本存在强耦合关系。

这意味着,你需要选择和当前 swc_core 版本匹配的 SWC 插件,才能使它正常执行。如果你使用的 SWC 插件版本与 Rspack 依赖的 swc_core 版本不匹配,Rspack 在执行构建时会抛出错误,请参考 Rspack 常见问题 - SWC 插件版本不匹配 进行处理。

#启用 Emotion 支持

启用 builtin:swc-loader 对 Emotion 支持的示例:

export default {
  tools: {
    swc: {
      jsc: {
        experimental: {
          plugins: [['@swc/plugin-emotion', {}]],
        },
      },
    },
  },
};

更多选项可参考 @swc/plugin-emotion。

#启用 Relay 支持

启用 builtin:swc-loader 对 Relay 支持的示例:

export default {
  tools: {
    swc: {
      jsc: {
        experimental: {
          plugins: [['@swc/plugin-relay', {}]],
        },
      },
    },
  },
};

更多选项可参考 @swc/plugin-relay。

#Minimizer 选项

Rsbuild 提供了 output.minify.js 选项来配置 SwcJsMinimizerRspackPlugin,下面是一些示例:

#排除文件

通过 exclude 选项可以排除某些文件,不进行压缩:

export default {
  output: {
    minify: {
      jsOptions: {
        exclude: /foo\/bar/,
      },
    },
  },
};

#切换压缩器

查看 output.minify - 切换压缩器 文档了解如何切换到其他 JavaScript 压缩器。