Rslib 的配置是基于 Rsbuild 扩展的,这意味着你可以使用 Rsbuild 的所有配置,以及 Rslib 特有的 lib 配置。
Rslib 提供了 lib 选项来配置库产物,它是一个数组,每个对象用于描述一种输出格式。
例如,输出 ESM 和 CJS 两种格式的产物,并使用 es2021 语法:
在 lib 字段外部,你可以设置公共的 Rsbuild 配置,这些配置将被 lib 内的每个配置对象继承。
例如,设置 Rsbuild 的 output.target 为 web,这会影响所有 lib 配置对象的输出:
在 lib 字段内部,你可以为每种输出格式设置单独的 Rsbuild 配置,这些配置将覆盖外部的公共 Rsbuild 配置。
例如,单独设置 ESM 产物的 output.target 为 web:
Rslib 会在内部生成 Rsbuild 的 environments 配置,请参考 调试配置 来查看最终生成的配置。
你也可以在 配置概览 页面查看所有配置的详细介绍。
当你使用 Rslib 的 CLI 命令时,Rslib 会自动读取当前项目根目录下的配置文件,按照以下顺序进行解析:
rslib.config.mjsrslib.config.tsrslib.config.jsrslib.config.cjsrslib.config.mtsrslib.config.cts我们推荐使用 .mjs 或 .ts 格式的配置文件,并从 @rslib/core 中导入 defineConfig 工具函数, 它提供了友好的 TypeScript 类型推导和自动补全,可以帮助你避免配置中的错误。
比如在 rslib.config.ts 中,你可以定义 Rslib 的 syntax 配置和 Rsbuild 的 output.target 配置:
如果你在开发一个非 TypeScript 项目,可以使用 .mjs 格式的配置文件。
当你使用 .ts, .mts 和 .cts 后缀时,Rslib 会使用 jiti 来加载配置文件,提供 ESM 与 CommonJS 的互操作性,模块解析的行为与 Node.js 原生行为存在一定差异。
Rslib CLI 通过 --config 选项来指定配置文件,可以设置为相对路径或绝对路径。
例如,你需要在执行 build 命令时使用 rslib.prod.config.mjs 文件,可以在 package.json 中添加如下配置:
你也可以将 --config 选项缩写为 -c:
Rslib 提供了三种配置文件加载方式:
jiti:当你使用 .ts, .mts 和 .cts 后缀的配置文件时,Rslib 会使用 jiti 来加载配置文件,提供 ESM 与 CommonJS 的互操作性,模块解析的行为与 Node.js 原生行为存在一定差异。
native:使用 Node.js 原生 loader 来加载配置文件,这可以保证模块解析的行为与 Node.js 原生行为一致,并且性能更好。这要求你使用的 JavaScript 运行时已经原生支持 TypeScript。
例如,Node.js 从 v22.6.0 开始已经原生支持 TypeScript,你可以运行如下命令来使用 Node.js 原生 loader 来加载配置文件:
auto(默认):优先使用 Node.js 原生 loader 来加载配置文件,失败时回退到使用 jiti 加载。
使用 Node.js 原生 loader 时,请注意以下限制:
导入 JSON 文件时,需要使用 import attributes:
导入 TypeScript 文件时,需要包含 .ts 扩展名:
在配置文件中,你可以使用 Node.js 环境变量,来动态写入不同的配置:
Rslib 允许你使用绝大部分的 Rsbuild 配置。目前不支持使用 environments 配置,因为该字段会在 Rslib 内部生成。
Rslib 基于 Rsbuild 构建,Rsbuild 支持直接修改 Rspack 配置对象,也支持通过 rspack-chain 修改 Rsbuild 内置的 Rspack 配置。这意味着你可以在 Rslib 项目中配置 Rspack 相关配置。
详情请参考 配置 Rspack。
在执行构建时,你可以通过添加 DEBUG=rsbuild 环境变量来启用 Rslib 的调试模式,它会在 Rslib 处理后显示最终的 Rsbuild 和 Rspack 配置。
在调试模式下,Rslib 会将 Rsbuild 和 Rspack 配置写入到 dist 目录下,方便开发者查看和调试。
以下是一个例子,这个库设置了 CJS 和 ESM 两种输出格式:
/dist/.rsbuild/rsbuild.config.esm.mjs 文件,即可查看 Rsbuild 配置的完整内容。/dist/.rsbuild/rspack.config.esm.mjs 文件,即可查看 Rspack 配置的完整内容。/dist/.rsbuild/rslib.config.mjs 文件,即可查看 Rslib 配置的完整内容。