Rsbuild 默认对构建性能进行了充分优化,但是随着使用场景变复杂、项目代码量变大,你可能会遇到一些构建性能的问题。
本文档提供了一些可选的提速方法,开发者可以根据实际场景选取其中的部分方法,从而进一步提升构建速度。
进行构建性能分析可以帮助你确定项目中的性能瓶颈,从而采取针对性的优化。
请参考 构建性能分析 章节了解更多。
以下是一些通用的优化方法,对开发环境和生产环境均有提速效果。
Lightning CSS 是一个基于 Rust 编写的高性能 CSS 解析、转译和压缩工具。它支持将许多现代的 CSS 特性解析并转化为指定浏览器支持的语法,并提供更好的压缩比例。
Rsbuild 提供了 Lightning CSS 插件,可以使用 lightningcss 替代内置的 postcss-loader
来编译 CSS,解决 PostCSS 和 autoprefixer 性能开销过大的问题。
对于存在大量 CSS 文件的项目,启用 Lightning CSS 插件可以显著提升整体构建性能。
对应用引用的模块数量进行优化,可以减少产物体积并提升构建性能,请阅读 优化产物体积 章节来了解一些优化方法。
以下是针对开发构建进行提速的方法。
启用 lazy compilation 可以显著减少开发启动时编译的模块数量,从而提升启动时间。
请参考 dev.lazyCompilation 了解更多。
为了提供良好的调试体验,Rsbuild 在开发环境下默认使用 cheap-module-source-map
格式 source map,这是一种高质量的 source map 格式,会带来一定的性能开销。
你可以通过 output.sourceMap 调整开发时的 source map 格式,从而提升构建速度。
比如禁用 source map:
或是把开发环境的 source map 格式设置为开销最小的 eval
格式:
关于不同 source map 格式之间的详细差异,请查看 Rspack - devtool。
这项优化的原理与「提升 Browserslist 范围」类似,区别在于,我们可以为开发环境和生产环境设置不同的 browserslist,从而减少开发环境下的编译开销。
比如,你可以在 .browserslistrc
中添加以下配置,表示在开发环境下只兼容最新的浏览器,在生产环境下兼容实际需要的浏览器:
注意,这项优化方法会导致开发环境与生产环境的构建产物存在一定差异。