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 默认对构建性能进行了充分优化,但是随着使用场景变复杂、项目代码量变大,你可能会遇到一些构建性能的问题。

本文档提供了一些可选的提速方法,开发者可以根据实际场景选取其中的部分方法,从而进一步提升构建速度。

#性能分析

进行构建性能分析可以帮助你确定项目中的性能瓶颈,从而采取针对性的优化。

请参考 构建性能分析 章节了解更多。

#通用优化

以下是一些通用的优化方法,对开发模式和生产模式均有提速效果。

#升级 Rsbuild

升级 Rsbuild 到最新版本,可以获得最新的性能优化,参考 升级 Rsbuild 章节。

#开启持久化缓存

Rsbuild 提供了 performance.buildCache 配置,开启后可以显著提升重构建的速度。

#减少模块

对应用引用的模块数量进行优化,可以减少产物体积并提升构建性能,请阅读 优化产物体积 章节来了解一些优化方法。

#优化 Tailwind CSS

在使用 Tailwind CSS v3 时,如果没有正确地配置 tailwind.config.js 中的 content 字段,可能会导致构建性能和热更新性能下降。

参考 Tailwind CSS v3 - 优化构建性能 了解更多。

#并行编译 Less 文件

如果你的项目使用了 @rsbuild/plugin-less 插件,且项目中包含大量 Less 文件,可以尝试开启并发编译功能来提升编译性能。

参考 Less 插件 - parallel 了解更多。

#工具选择

尽管 Rsbuild 本身已经提供了优秀的构建性能,但当你使用某些基于 JavaScript 的工具时,可能会对整体构建性能产生负面影响,特别是在大型项目中。

  • @rsbuild/plugin-babel:该插件基于 Babel 实现,建议优先使用性能更优的 SWC 进行代码转换。
  • @rsbuild/plugin-less:Less 编译器性能相对较差,推荐使用 @rsbuild/plugin-sass 或其他高性能的 CSS 方案。
  • terser-webpack-plugin:可以将 Terser 替换为更快的压缩工具,例如使用 Rsbuild 内置的 SWC。

#开发模式优化

以下是针对开发构建进行提速的方法。

#开启 Lazy compilation

启用 lazy compilation 可以显著减少开发启动时编译的模块数量,从而提升启动时间。

rsbuild.config.ts
export default {
  dev: {
    lazyCompilation: true,
  },
};

请参考 dev.lazyCompilation 了解更多。

#开启 native watcher

启用 Rspack 的 native watcher 可以提升开发模式下的 HMR 性能。

rsbuild.config.ts
export default {
  tools: {
    rspack: {
      experiments: {
        nativeWatcher: true,
      },
    },
  },
};

#Source map 格式

为了提供良好的调试体验,Rsbuild 在开发模式下默认使用 cheap-module-source-map 格式 source map,这是一种高质量的 source map 格式,会带来一定的性能开销。

你可以通过 output.sourceMap 调整开发时的 source map 格式,从而提升构建速度。

比如禁用 source map:

rsbuild.config.ts
export default {
  output: {
    sourceMap: {
      js: false,
    },
  },
};

或是把开发模式的 source map 格式设置为开销最小的 eval 格式:

rsbuild.config.ts
export default {
  output: {
    sourceMap: {
      js: process.env.NODE_ENV === 'development' ? 'eval' : false,
    },
  },
};

关于不同 source map 格式之间的详细差异,请查看 Rspack - devtool。

#Browserslist 范围

这项优化的原理与「提升 Browserslist 范围」类似,区别在于,我们可以为开发模式和生产模式设置不同的 browserslist,从而减少开发模式下的编译开销。

比如,你可以在 .browserslistrc 中添加以下配置,表示在开发模式下只兼容最新的浏览器,在生产模式下兼容实际需要的浏览器:

.browserslistrc
[production]
chrome >= 87
edge >= 88
firefox >= 78
safari >= 14

[development]
last 1 chrome version
last 1 firefox version
last 1 safari version

注意,这项优化方法会导致开发模式与生产模式的构建产物存在一定差异。