website/docs/en/guide/features/module-resolution.mdx
Module resolution is the process of converting a module identifier to a module's file path.
Rspack uses rspack-resolver for module path resolution, which is an extension to the Node.js module resolution algorithm with the same interface as enhanced-resolve.
Refer to resolve configuration for more information about module resolution configuration.
Rspack supports the following three kinds of file paths:
import '/home/me/file';
Since this path is already an absolute path, there is usually no need to do further parsing, just return the path directly.
import './src/answer';
In this case, the directory where the resource files using import and require are located is considered the context directory. The relative path given in import/require is spelled out with that context directory path to generate the absolute path to the module.
import 'lodash';
Module paths are those that do not start with './', '../', '/'. In this case, Rspack will resolve the absolute path of the module according to the module resolution rules. The node module resolution algorithm has a detailed description of the rules for resolve modules.
importsRspack's resolver supports the imports field in package.json for resolving module identifiers that start with # within a package.
In the following example, both #utils and #/main are resolved from the current package's imports field:
{
"imports": {
"#utils": "./src/utils/index.js",
"#/*": "./src/*"
}
}
import utils from '#utils'; // resolves to ./src/utils/index.js
import main from '#/main.ts'; // resolves to ./src/main.ts
Use the
resolve.importsFieldsoption to customize the field name used forimports.