close

Module resolution

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

Rspack supports the following three kinds of file paths:

Absolute 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.

Relative paths

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.

Module paths

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.

package.json imports

Rspack'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:

package.json
{
  "imports": {
    "#utils": "./src/utils/index.js",
    "#/*": "./src/*"
  }
}
src/index.js
import utils from '#utils'; // resolves to ./src/utils/index.js
import main from '#/main.ts'; // resolves to ./src/main.ts

Use the resolve.importsFields option to customize the field name used for imports.