source.transformImport
- Type:
- Default:
undefined
Transform the import path to modularly import subpaths of third-party packages. The functionality is similar to babel-plugin-import.
Example
Import antd on demand
When using the antd component library (versions below v5), you can import components on demand with this config:
The source code is:
Will be transformed into:
Import lodash on demand
When using lodash, you can automatically refer to the subpath through transformImport to reduce bundle size.
The source code is:
Will be transformed to:
Please avoid the following usage, otherwise all of lodash's code will be imported:
Scope
transformImport is only applicable to modules compiled by Rsbuild. Note that Rsbuild does not compile JavaScript files in the node_modules by default. This means that the code in the node_modules directory will not be processed by transformImport.
If you want to process the code in node_modules through transformImport, please add the relevant modules to the source.include config.
Options
libraryName
- Type:
string
The original import path that needs to be transformed.
libraryDirectory
- Type:
string - Default:
'lib'
Constructs the transformed path by concatenating ${libraryName}/${libraryDirectory}/${member}, where member is the imported member.
Example:
Out:
style
- Type:
string | boolean - Default:
undefined
Determines whether to import related styles:
true: import${libraryName}/${libraryDirectory}/${member}/style.'css': import${libraryName}/${libraryDirectory}/${member}/style/css.falseorundefined: do not import styles.
When it is set to true:
Out:
When it is set to 'css':
Out:
For custom style import paths, use customStyleName or styleLibraryDirectory.
styleLibraryDirectory
- Type:
string - Default:
undefined
Constructs the import path when importing styles. If this configuration is specified, the style configuration option will be ignored. The constructed import path is ${libraryName}/${styleLibraryDirectory}/${member}.
When it is set to styles:
Out:
camelToDashComponentName
- Type:
boolean - Default:
true
Whether to convert camelCase imports to kebab-case.
Example:
Out:
transformToDefaultImport
- Type:
boolean - Default:
true
Whether to convert import statements to default imports.
Example:
Out:
customName
- Type:
string - Default:
undefined
Customize the transformed path.
For example, the following config will transform import { foo } from 'my-lib' into import foo from 'my-lib/foo'.
In addition, you can also declare the format of the path after transformation, for example setting it to my-lib/{{ camelCase member }} to convert member into camel case.
The following formats are supported:
kebabCase: lowercase letters, words joined by hyphens. For example:my-variable-name.snakeCase: lowercase letters, words joined by underscores. For example:my_variable_name.camelCase: first letter lowercase, the first letter of each following word uppercase. For example:myVariableName.upperCase: uppercase letters, other characters unchanged. For example:MY-VARIABLE-NAME.lowerCase: lowercase letters, other characters unchanged. For example:my-variable-name.
customStyleName
- Type:
string - Default:
undefined
Customize the transformed style path, the usage is consistent with customName.
ignoreEsComponent
- Type:
string[] - Default:
undefined
Specify named imports that should not be transformed to subpath imports. The values should match the names in the original import statement.
For example:
The source code is:
Will be transformed to:
ignoreStyleComponent
- Type:
string[] - Default:
undefined
Specify named imports that should not import related styles. Their JavaScript import paths are still transformed. The values should match the names in the original import statement.
For example:
The source code is:
Will be transformed to:
Function type
The transformImport can be a function, it will accept the previous value, and you can modify it.
You can also return a new value as the final result in the function, which will replace the previous value.

