lib.dts

  • 类型:
type Dts =
  | {
      bundle?: boolean;
      distPath?: string;
      build?: boolean;
      abortOnError?: boolean;
      autoExtension?: boolean;
    }
  | boolean;
  • 默认值: undefined

配置 TypeScript 声明文件的生成。

布尔类型

DTS 生成是一个可选功能,你可以设置 dts: true 来启用 bundleless 的 DTS 生成。

rslib.config.ts
1export default {
2  lib: [
3    {
4      format: 'esm',
5      dts: true,
6    },
7  ],
8};

如果你想要禁用 DTS 生成,可以设置 dts: false 或者不指定 dts 选项。

rslib.config.ts
1export default {
2  lib: [
3    {
4      format: 'esm',
5      dts: false,
6    },
7  ],
8};

对象类型

如果你想要自定义 DTS 的生成,可以将 dts 选项设置为一个对象。

dts.bundle

  • 类型: boolean
  • 默认值: false

是否打包 DTS 文件。

示例

如果你想要 打包 DTS 文件,你需要:

  1. 安装 @microsoft/api-extractor 作为开发依赖,它是用于打包 DTS 文件的底层工具。
npm
yarn
pnpm
bun
npm add @microsoft/api-extractor -D
  1. dts.bundle 设置为 true
rslib.config.ts
1export default {
2  lib: [
3    {
4      format: 'esm',
5      dts: {
6        bundle: true,
7      },
8    },
9  ],
10};
NOTE

@microsoft/api-extractor 只支持为单个入口打包 DTS。如果你想要为多个入口生成打包后的 DTS,你可以在 lib 字段中添加额外的 lib 配置,将多个入口拆分为多个 lib 配置。

处理第三方依赖

当我们打包 DTS 文件时,我们需要指定哪些第三方包的类型需要被打包,可以参考 处理第三方依赖 文档了解更多关于 externals 相关的配置。

dts.distPath

  • 类型: string

DTS 文件的输出目录。

默认值

默认值按照以下优先级确定:

  1. 当前 lib 配置中的 dts.distPath 值。
  2. tsconfig.json 文件中的 declarationDir 值。
  3. 当前 lib 配置中的 output.distPath.root 值。

示例

rslib.config.ts
1export default {
2  lib: [
3    {
4      format: 'esm',
5      dts: {
6        distPath: './dist-types',
7      },
8    },
9  ],
10};

dts.build

  • 类型: boolean
  • 默认值: false

是否在生成 DTS 文件时构建项目的 references。这相当于在 tsc 命令中使用 --build 标志。更多详细信息请参考 项目引用

NOTE

当启用此选项时,你必须在 tsconfig.json 中显式设置 declarationDiroutDir 以满足构建要求。

dts.abortOnError

  • 类型: boolean
  • 默认值: true

当 DTS 生成过程中出现错误时,是否中止构建过程。

默认情况下,类型错误会导致构建失败。

abortOnError 设置为 false 时(如下所示),即使代码中存在类型问题,构建仍然会成功。

rslib.config.ts
1export default {
2  lib: [
3    {
4      format: 'esm',
5      dts: {
6        abortOnError: false,
7      },
8    },
9  ],
10};
WARNING

当禁用该配置时,无法保证类型文件会被正确生成。

dts.autoExtension

  • 类型: boolean
  • 默认值: false

是否根据 format 选项自动设置 DTS 文件扩展名。

默认扩展名

dts.autoExtensionfalse 时,DTS 文件扩展名默认为 .d.ts

dts.autoExtension 设置为 true 时,DTS 文件扩展名将会是:

  • package.json 中设置 type: module 时,esm 格式使用 .d.tscjs 格式使用 .d.cts

  • package.json 中设置 type: commonjs 或没有 type 字段时,cjs 格式使用 .d.tsesm 格式使用 .d.mts

NOTE

这遵循与 lib.autoExtension 相同的逻辑,但默认值不同,因为 DTS 文件扩展名可能会在不同的模块解析策略中造成一些问题。