output.cssModules
- Type:
CSSModules
Configure custom CSS Modules settings.
The CSS Modules feature in Rsbuild is based on the modules option of css-loader. You can refer to css-loader - modules to learn more.
cssModules.auto
The auto option enables CSS Modules automatically based on filenames.
- Type:
- Default:
true
Type descriptions:
true: Enable CSS Modules for files ending in.module.*(recommended). Also supports.modules.*.false: Disable CSS Modules.RegExp: Enable CSS Modules for files that match the regular expression, using the flags you specify.function: Enable CSS Modules for files based on the filename satisfying your filter function check.
For example, to additionally enable CSS Modules for files in the shared/ directory:
You can also use a regular expression to replace the default matching rule. For example, to enable CSS Modules for files ending in .module.* or a custom .scoped.* suffix:
cssModules.exportLocalsConvention
Style of exported class names.
- Type:
- Default:
'camelCase'
Type description:
asIs: Class names will be exported as is.camelCase: Class names will be camelized, the original class name will be exported.camelCaseOnly: Class names will be camelized, the original class name will not be exported.dashes: Only dashes in class names will be camelized, the original class name will be exported.dashesOnly: Dashes in class names will be camelized, the original class name will not be exported.
Example
Suppose you have the following CSS file:
Different exportLocalsConvention configurations will produce different export results:
cssModules.exportGlobals
- Type:
boolean - Default:
false
Allows exporting names from global class names, so you can use them via import.
Example
Set the exportGlobals to true:
Use :global() in CSS Modules:
Then you can import the class name wrapped with :global():
cssModules.localIdentName
- Type:
string - Default:
Sets the format of the class names generated by CSS Modules after compilation.
Default value
localIdentName has different default values in development and production.
In a production, Rsbuild will generate shorter class names to reduce the bundle size.
Placeholders
You can use the following placeholders in localIdentName:
[name]- the basename of the asset.[local]- original class.[hash]- the hash of the string.[folder]- the folder relative path.[path]- the relative path.[file]- filename and path.[ext]- extension with leading dot.[hash:<hashDigest>:<hashDigestLength>]: hash with hash settings.hashDigestis the hash encodings, andhashDigestLengthis the length of the hash value.
Example
Set localIdentName to other value, for example, the shorter 5-character hash value:
If the hash length is set too short, it may increase the risk of class name conflicts.
cssModules.mode
- Type:
- Default:
'local'
Controls the mode of compilation applied to the CSS Modules.
Optional values
cssModules.mode can take one of the following values:
'local'(default): This enables the CSS Modules specification for scoping CSS locally. Class and ID selectors are rewritten to be module-scoped, and@valuebindings are injected.'global': Selectors are global by default. Use:localfor locally scoped selectors.@valueprocessing remains enabled.'pure': Uses local scoping and requires each selector to contain at least one local class or ID. It does not automatically remove unused CSS classes.'icss': This compiles to the low-level Interoperable CSS format, which provides a syntax for declaring:importand:exportdependencies between CSS and other languages. It does not perform any scoping or@valueinjection.
The 'local' mode is the most common use case for CSS Modules, enabling modular and locally-scoped styles within components. The other modes may be used in specific scenarios.
For example:
Function
You can also pass a function to cssModules.mode that determines the mode based on the resource path, query, or fragment. This allows you to use different modes for different files.
For example, to use local scoping for .module.css files and global styles for other files:
cssModules.namedExport
- Type:
boolean - Default:
false
Whether to enable ES modules named export for class names.
Example
namedExport: false:
namedExport: true:
When namedExport is set to true, the default class exported by CSS Modules will be automatically renamed to _default class because default is a reserved word in ECMA modules.

