Rsbuild 对 CSS 提供开箱即用的支持,包括 Lightning CSS、PostCSS、CSS Modules、CSS 预处理器、CSS 内联和 CSS 压缩。
Rsbuild 也提供了多个配置项,允许自定义 CSS 文件的处理规则。
Lightning CSS 是一个基于 Rust 编写的高性能 CSS 解析、转译和压缩工具。它支持将许多现代的 CSS 特性解析并转化为指定浏览器支持的语法,并提供更好的压缩比例。
Rsbuild 使用 Rspack 内置的 lightningcss-loader 来转换 CSS 代码,它会自动读取项目中的 browserslist 配置,并将 CSS 代码转换为目标浏览器支持的语法。
-webkit-
、-moz-
、-ms-
等,因此你不需要手动添加前缀,也不需要使用 autoprefixer 插件。lightningcss-loader
的选项。如果 Lightning CSS 无法满足你的需求,你也可以禁用 Lightning CSS,并使用 PostCSS 来转换 CSS 代码。
步骤如下:
false
来禁用 Lightning CSS loader。在生产模式构建时, Rsbuild 会开启 Rspack 内置的 LightningCssMinimizerRspackPlugin 插件,将 CSS 资源压缩,以达到更好的传输效率。
LightningCssMinimizerRspackPlugin
的选项。Rsbuild 支持通过 PostCSS 来转换 CSS 代码。你可以通过以下方式来配置 PostCSS:
postcss.config.js
:postcss.config.js
文件和 tools.postcss
选项时,两者都会生效,并且 tools.postcss
的优先级更高。postcss.config.js
文件,也没有配置 tools.postcss
选项,Rsbuild 将不会注册 postcss-loader
。Rsbuild 默认支持 CSS Modules,请阅读 使用 CSS Modules 章节来了解 CSS Modules 的完整用法。
Rsbuild 通过插件来支持社区流行的 CSS 预处理器,包括 Sass、Less 和 Stylus,使用方式请参考:
请阅读 React - CSS-in-JS 章节来了解如何在 Rsbuild 中使用常见的 CSS-in-JS 库。
默认情况下,Rsbuild 会把 CSS 提取为独立的 .css
文件,并输出到构建产物目录。
如果你希望将样式内联到 JS 文件中,可以将 output.injectStyles 设置为 true
来禁用 CSS 提取逻辑。当浏览器请求到 JS 文件后,JS 将动态地向 HTML 插入 <style>
标签,以此加载 CSS 样式。
这将会增大你的 JS Bundle 体积,因此通常情况下,不太建议禁用 CSS 提取逻辑。
Rsbuild 支持引用 node_modules 里的 CSS 文件。
~
前缀来解析 node_modules 里的样式文件,但这是一个废弃的特性,建议从代码中移除 ~
前缀。