如何生成仅包含直接导出类型的TypeScript声明文件?
TypeScript声明文件类型摇树可行方案
方案1:使用rollup-plugin-dts
这是专门针对TypeScript声明文件的Rollup插件,自带原生类型摇树能力,能精准保留导出依赖的类型:
- 安装依赖:
npm install rollup-plugin-dts --save-dev - 创建
rollup.config.js配置文件:import dts from 'rollup-plugin-dts'; export default { input: './main.d.ts', output: [{ file: './dist/main.d.ts', format: 'es' }], plugins: [dts()], }; - 执行打包:
npx rollup -c - 效果:打包后的声明文件仅保留
main.d.ts导出的Foo类型,无关的Bar会被自动剔除,最终输出可合并为单个文件(需拆分可调整配置)
方案2:使用tsup
基于ESBuild的轻量打包工具,支持声明文件的自动摇树优化,配置简单:
- 安装依赖:
npm install tsup --save-dev - 创建
tsup.config.ts配置文件:import { defineConfig } from 'tsup'; export default defineConfig({ entry: ['main.d.ts'], dts: true, outDir: 'dist', clean: true, }); - 执行打包:
npx tsup - 效果:自动分析依赖链,只保留对外导出的
Foo类型,输出精简后的声明文件
手动处理方案(适合小型项目)
如果项目类型结构简单,可直接手动梳理依赖:
- 将
other.d.ts中的Foo类型复制到main.d.ts或单独的发布用声明文件中 - 删除
other.d.ts中未被引用的Bar等类型 - 注意:该方式需手动维护,仅适合类型数量少、结构稳定的场景
补充:API Extractor默认不做类型摇树,需配合特定模式或复杂配置,上述工具的摇树效果更直接高效
内容的提问来源于stack exchange,提问作者cyberwombat
相关产品推荐
相关产品推荐

