lib.dts
- Type:
- Default:
undefined - CLI:
--dts/--no-dts
Configure the generation of the TypeScript declaration files.
Boolean type
Declaration files generation is an optional feature, you can set dts: true to enable bundleless declaration files generation.
If you want to disable declaration files generation, you can set dts: false or do not specify the dts option.
Object type
If you want to customize the declaration files generation, you can set the dts option to an object.
dts.bundle
- Type:
boolean | { bundledPackages?: string[] } - Default:
false
Whether to bundle the declaration files.
If you want to bundle declaration files files, you should:
- Install @microsoft/api-extractor as a development dependency, which is the underlying tool used for bundling declaration files.
- Set
dts.bundletotrue.
dts.bundle.bundledPackages
- Type:
string[]
Specifies the dependencies whose declaration files should be bundled. This configuration is passed to the bundledPackages option of @microsoft/api-extractor.
By default, Rslib determines externalized dependencies based on the following configurations. For details, refer to Handle third-party dependencies.
- autoExternal configuration
- output.externals configuration
Direct dependencies (declared in package.json) that are not externalized will be automatically added to bundledPackages, and their declaration files will be bundled into the final output.
When the default behavior does not meet the requirements, you can explicitly specify the dependencies whose declaration files need to be bundled through dts.bundle.bundledPackages. After setting this configuration, the above default behavior will be completely overwritten.
This is typically used for bundling transitive dependencies (dependencies of direct dependencies). For example, if the project directly depends on foo, and foo depends on bar, you can bundle both foo and bar's declaration files as follows:
bundledPackages can be specified with the minimatch syntax, but will only match the declared direct dependencies in package.json.
dts.distPath
- Type:
string
The output directory of declaration files.
Default value
The default value follows the priority below:
- The
dts.distPathvalue in the current lib configuration. - The
declarationDirvalue in thetsconfig.jsonfile. - The output.distPath or output.distPath.root value in the current lib configuration.
Example
dts.build
- Type:
boolean - Default:
false
Whether to generate declaration files with building the project references. This is equivalent to using the --build flag with the tsc command. See Project References for more details.
When the project references are configured but the referenced project has not been built separately (for example, the source code of other projects is directly referenced in monorepo, but the corresponding declaration file is missing in the project), this option needs to be enabled to ensure that the declaration files of referenced projects can be generated correctly, thereby ensuring the integrity of the type system.
When this option is enabled, you must explicitly set declarationDir or outDir in tsconfig.json in order to meet the build requirements.
dts.abortOnError
- Type:
boolean - Default:
true
Whether to abort the build process when an error occurs during declaration files generation.
By default, type errors will cause the build to fail.
When abortOnError is set to false like below, the build will still succeed even if there are type issues in the code.
When this configuration is disabled, there is no guarantee that the type files will be generated correctly.
dts.autoExtension
- Type:
boolean - Default:
false
Whether to automatically set the declaration file extension based on the format option.
Default extension
By default that when dts.autoExtension is false, the declaration file extension will be .d.ts.
When dts.autoExtension is set to true, the declaration file extension will be:
-
.d.tswithesmformat and.d.ctswithcjsformat whentype: moduleinpackage.json. -
.d.tswithcjsformat and.d.mtswithesmformat whentype: commonjsor notypefield inpackage.json.
-
It follows the same logic as lib.autoExtension, but the default value is different since the declaration file extension may cause some issues with different module resolution strategies.
-
Type declaration import extensions are controlled by the redirect.dts.extension configuration.
-
When dts.tsgo is enabled, if the project also enables dts.build or emits declaration files with different extensions to the same directory,
dts.autoExtensionmay not work correctly.
dts.alias
- Type:
Record<string, string> - Default:
{}
Configure the path alias for declaration files.
dts.alias will be merged with compilerOptions.paths configured in tsconfig.json and dts.alias has a higher priority.
In most cases, you don't need to use dts.alias, but consider using it when you need to use path alias only in declaration files without wanting to affect JavaScript outputs. For example, map the declaration file of foo to ./compiled/foo.
dts.tsgo
- Type:
boolean - Default:
false
Whether to generate declaration files with tsgo, which can provide faster generation of declaration files, especially for large projects.
This feature is currently an experimental feature. Since tsgo is still in the experimental stage, there may be some bugs and unresolved issues or limitations. So, make sure to fully test it in your project before enabling this option.
To enable this option, you need to:
- Install @typescript/native-preview as a development dependency.
@typescript/native-preview requires Node.js 20.6.0 or higher.
- Configure in the Rslib config file:
- In order to ensure the consistency of local development, you need to install the corresponding VS Code Preview Extension and add the following configuration in the VS Code settings:
