本章介绍什么是 TypeScript 类型声明文件,以及如何在 Rslib 中生成类型声明文件。
TypeScript 类型声明文件提供 JavaScript 代码的类型信息。类型声明文件通常具有 .d.ts
扩展名。它们允许 TypeScript 编译器理解 JavaScript 代码的类型结构,从而实现以下功能:
Bundle 类型将多个 TypeScript 声明文件打包到一个声明文件中。
优势:
劣势:
Bundleless 类型为库中的每个模块生成单独的声明文件,就像 tsc
一样。
优势:
劣势:
Rslib 默认使用 TypeScript Compiler API 生成 bundleless 类型,用 API Extractor 生成 bundle 类型。
如果你想生成 bundleless 类型,可以:
dts: true
或者 dts: { bundle: false }
在 Rslib 配置文件。如果你想生成 bundle 类型,可以:
@microsoft/api-extractor
作为 devDependencies
, 这是用于打包类型声明文件的底层工具。dts: { bundle: true }
。需要注意的是,Rslib 在生成类型声明文件的过程中,默认会强制设置 tsconfig.json
中的一些配置项以保证 TypeScript Compiler API 能够仅生成类型声明文件。
最终类型声明文件输出目录的优先级从高到低为:
tsconfig.json
中的 declarationDir
配置项配置项 | 描述说明 |
---|---|
dts.bundle | 是否打包类型声明文件。 |
dts.distPath | 类型声明文件的输出目录。 |
dts.build | 是否在生成类型声明文件时构建项目的 project references。 |
dts.abortOnError | 当类型声明文件生成过程中出现错误时,是否中止构建过程。 |
dts.autoExtension | 是否根据 format 选项自动设置类型声明文件扩展名。 |
banner.dts | 在每个类型声明文件顶部注入内容。 |
footer.dts | 在每个类型声明文件底部注入内容。 |
redirect.dts.path | 是否自动重定向类型声明文件中的导入路径。 |
redirect.dts.extension | 是否根据类型声明文件自动重定向文件扩展名到导入路径。 |