默认行为
Rslib 基于 Rsbuild 和 Rspack,并针对库构建场景调整了一些默认行为。
这些默认行为通常取决于 format、bundle、output.target 等配置,以及 package.json 和 tsconfig.json 文件中的部分属性,你可以通过配置和插件调整这些行为。
环境变量
Rslib 在构建库代码时,会根据 format 选择将源代码中的 process.env.NODE_ENV 表达式保留在产物中,或在构建时替换为指定值:
你可以通过 source.define 显式指定替换值,或通过 tools.rspack 配置 Rspack 的 optimization.nodeEnv 来调整或关闭替换。
有关其他预设环境变量、.env 文件的加载规则及变量替换方式,请参阅 环境变量。
格式、入口和依赖
不同 format 对应的默认设置如下:
output.autoExternal 对 JavaScript 依赖的自动 external 仅在 bundle 模式下生效。
format 和 output.target 分别指定模块格式和目标运行环境。构建面向浏览器的库时,将 output.target 设置为 'web',MF 格式还需要添加 Module Federation 插件。
结合产物格式、目标环境和 bundle 配置,Rslib 对入口、目录结构和依赖采用以下默认处理:
语法和模块兼容性
优化和分包
Rslib 通过 Rsbuild 的 mode 配置选择构建和优化策略:
rslib和rslib --watch使用'production',watch 只增加文件监听和重新构建。rslib mf-dev使用'development',用于 MF 开发服务。
mode 是独立于构建进程 NODE_ENV 的配置。例如,执行 NODE_ENV=development rslib 时,构建仍使用 mode: 'production'。
Rslib 在此基础上调整了以下优化默认值:
- 手动设置
output.minify会替换整套默认压缩配置,即使只设置对象中的部分选项,也不会继承上述预设。output.minify: false只关闭压缩器,Rspack 仍会分析导出的使用情况和副作用,但可能保留未使用的声明。 splitChunks.preset: 'none'不保证只生成一个文件:动态导入、多个入口、Worker 和运行时代码都可能产生额外文件。
产物文件
静态资源
CSS
类型声明
Rslib 默认不生成类型声明文件。开启 dts: true 后,默认生成未打包的类型文件,与 JavaScript 的 bundle 设置无关。多份 JavaScript 产物可以共用类型文件,通常只需在一个 lib 项中开启 dts。
构建性能与产物体积
调整和检查配置
所有产物共用的配置放在顶层,单个产物的配置放在对应的 lib 项中。lib 中的配置优先于顶层配置,再由这些配置决定对应的默认处理。CLI 中显式指定的构建参数会覆盖配置文件中的对应选项,详见 CLI。
对象通常递归合并,数组通常追加;resolve.extensions 等选项则整体覆盖,具体规则见 配置合并规则。通过 mergeRslibConfig 合并多份配置时,lib 中相同 id 的项会合并,没有 id 的项会追加。
表格中的 Rspack 配置项可以通过 tools.rspack 调整,用法请查看该配置文档,其他 Rslib 与 Rsbuild 配置项可以查看 配置总览。
你可以开启 调试模式,或运行 rslib inspect 命令来查看最终生成的配置。
