> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# resolve

与模块解析相关的选项。

## resolve.aliasStrategy [![resolve.aliasStrategy](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.aliasStrategy](https://rsbuild.rs/zh/config/resolve/alias-strategy)
设置路径别名解析的策略，用于控制 `tsconfig.json` 中的 `paths` 选项与 [resolve.alias](/zh/config/rsbuild/resolve.md#resolvealias) 选项之间的优先级关系。

## resolve.alias [![resolve.alias](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.alias](https://rsbuild.rs/zh/config/resolve/alias)
设置模块路径的别名，用于简化导入路径或重定向模块引用，类似于 Rspack 的 [resolve.alias](https://rspack.rs/zh/config/resolve#resolvealias) 配置。

对于 TypeScript 项目，你只需要在 `tsconfig.json` 中配置 [compilerOptions.paths](https://www.typescriptlang.org/tsconfig/#paths) 即可，Rslib 会自动识别它，不需要额外配置 `resolve.alias` 字段。

值得注意的是，在 bundle 模式下，`resolve.alias` 与 [output.externals](/zh/config/rsbuild/output.md#outputexternals) 都可以用于设置别名，但它们在以下方面有所不同：

- `resolve.alias` 用于将目标模块替换为另一个模块，该模块会被打包到产物中。

  例如，如果你想在打包一个 package 时将 `lodash` 替换为 `lodash-es`，可以这样配置：

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

  此时，所有在源代码中导入的 `lodash` 模块将被映射为 `lodash-es`，并被打包到产物中。

- `output.externals` 用于处理外部化模块的别名映射。外部化模块不会被打包到产物中，而是在运行时从外部源导入。

  例如，如果你想将产物中的外部化模块 `react` 和 `react-dom` 替换为 `preact/compat`，可以这样配置：

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

  此时，代码 `import { useState } from 'react'` 将被替换为 `import { useState } from 'preact/compat'`。

::: note
在 bundleless 模式下，由于没有打包这个概念，所有模块都会被外部化，Rslib 会自动根据 `resolve.alias` 或 `tsconfig.json` 中 [compilerOptions.paths](https://www.typescriptlang.org/tsconfig/#paths) 配置的映射关系，对最终解析到 [outBase](/zh/config/lib/out-base.md) 目录下的模块进行转换。
:::

## resolve.conditionNames [![resolve.conditionNames](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.conditionNames](https://rsbuild.rs/zh/config/resolve/condition-names)
指定用于匹配包 [exports 字段](https://nodejs.org/api/packages.html#exports) 入口点的 condition names（条件名称）。

## resolve.dedupe [![resolve.dedupe](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.dedupe](https://rsbuild.rs/zh/config/resolve/dedupe)
强制 Rsbuild 从项目根目录解析指定的包，这可以用于移除重复包和减少包大小。

## resolve.extensions [![resolve.extensions](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.extensions](https://rsbuild.rs/zh/config/resolve/extensions)
自动添加导入文件的扩展名。这意味着你可以导入文件，而不需要显式地写它们的扩展名。

## resolve.mainFields [![resolve.mainFields](https://assets.rspack.rs/rsbuild/rsbuild-logo.svg)resolve.mainFields](https://rsbuild.rs/zh/config/resolve/main-fields)
控制用于定位包入口文件的 package.json 字段优先级。Rspack 在解析 npm 包入口时，会按该列表的顺序依次尝试这些字段。
