resolve

Options for module resolution.

resolve.aliasStrategy resolve.aliasStrategyresolve.aliasStrategy

Control the priority between the paths option in tsconfig.json and the resolve.alias option of Rsbuild.

resolve.alias resolve.aliasresolve.alias

Create aliases to import or require certain modules, same as the resolve.alias config of Rspack.

It is worth noting that in bundle mode, both resolve.alias and output.externals can be used to set aliases, but they differ in the following ways:

  • resolve.alias is used to replace the target module with another module, which will be bundled into the output.

    For example, if you want to replace lodash with lodash-es when bundling a package, you can configure it as follows:

    rslib.config.ts
    export default {
      // ...
      resolve: {
        alias: {
          lodash: 'lodash-es',
        },
      },
    };

    Now, all lodash imports in the source code will be mapped to lodash-es and bundled into the output.

  • output.externals is used to handle alias mapping for externalized modules. Externalized modules are not included in the bundle; instead, they are imported from external sources at runtime.

    For example, if you want to replace externalized modules react and react-dom with preact/compat in the bundle, you can configure it as follows:

    rslib.config.ts
    export default {
      // ...
      output: {
        externals: {
          react: 'preact/compat',
          'react-dom': 'preact/compat',
        },
      },
    };

    Now, the code import { useState } from 'react' will be replaced with import { useState } from 'preact/compat'.

NOTE

In bundleless mode, since there is no bundling concept, all modules will be externalized, so Rslib will automatically externalize the aliased module in the final output by using output.externals.

resolve.dedupe resolve.deduperesolve.dedupe

Force Rsbuild to resolve the specified packages from project root, which is useful for deduplicating packages and reducing the bundle size.

resolve.extensions resolve.extensionsresolve.extensions

Automatically resolve file extensions when importing modules. This means you can import files without explicitly writing their extensions.