close
logo
Rslib
指南
配置
博客
English
简体中文
指南
配置
博客
English
简体中文
logo
Rslib
配置总览

Lib 配置

lib.format
lib.bundle
lib.autoExtension
lib.autoExternal
lib.redirect
lib.syntax
lib.externalHelpers
lib.banner
lib.footer
lib.dts
lib.shims
lib.id
lib.umdName
lib.outBase

Rsbuild 配置

logLevel
resolve
source
output
tools
plugins
📝 在 GitHub 上编辑此页
上一页logLevel
下一页source

#resolve

与模块解析相关的选项。

#resolve.aliasStrategy resolve.aliasStrategyresolve.aliasStrategy

控制 resolve.alias 选项与 tsconfig.json 中的 paths 选项的优先级。

#resolve.alias resolve.aliasresolve.alias

设置模块路径的别名,用于简化导入路径或重定向模块引用,类似于 Rspack 的 resolve.alias 配置。

对于 TypeScript 项目,你只需要在 tsconfig.json 中配置 compilerOptions.paths 即可,Rslib 会自动识别它,不需要额外配置 resolve.alias 字段。

值得注意的是,在 bundle 模式下,resolve.alias 与 output.externals 都可以用于设置别名,但它们在以下方面有所不同:

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

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

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

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

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

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

    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 配置的映射关系,对最终解析到 outBase 目录下的模块进行转换。

#resolve.dedupe resolve.deduperesolve.dedupe

强制 Rsbuild 从项目根目录解析指定的包,这可以用于移除重复包和减少包大小。

#resolve.extensions resolve.extensionsresolve.extensions

自动添加导入文件的扩展名。这意味着你可以导入文件,而不需要显式地写它们的扩展名。