如何通过Bun Build打包生成单文件类型定义(.d.ts)?
实现生成单文件
.d.ts的方法 目前Bun的build命令暂时不支持直接生成合并后的单文件类型定义,你可以通过以下两步实现需求:
步骤1:生成完整的分散类型定义文件
首先确保能生成所有依赖的.d.ts文件,有两种方式可选:
方式A:用Bun自带的类型生成
在原有的Bun build命令中添加--declaration参数,强制生成类型文件:
bun build ./index.ts --outdir ./build --declaration
执行后,build目录下会生成和源码结构对应的.d.ts文件(包括依赖模块的类型)。
方式B:用TypeScript编译器单独生成
如果Bun生成的类型不全,直接用tsc命令,基于你的tsconfig.json生成所有类型文件:
tsc --emitDeclarationOnly --outDir ./build
这个命令只会生成.d.ts,不会编译js,适合单独处理类型。
步骤2:合并分散的.d.ts为单文件
用专门的工具把多个.d.ts合并成一个单文件,推荐两个常用工具:
工具1:dts-bundle-generator
- 先安装依赖:
bun add -d dts-bundle-generator
- 执行合并命令,指定入口文件,输出单文件类型:
bunx dts-bundle-generator ./index.ts -o ./build/index.d.ts
这个工具会自动分析所有依赖的类型,合并成一个完整的index.d.ts。
工具2:@microsoft/api-extractor
如果你的项目是大型库,需要更规范的类型导出,用这个工具:
- 安装依赖:
bun add -d @microsoft/api-extractor @microsoft/api-extractor-model
- 初始化配置文件:
bunx api-extractor init
- 修改生成的
api-extractor.json,主要调整以下配置:mainEntryPointFilePath设置为./build/index.d.ts(对应步骤1生成的入口类型文件)dtsRollup下的untrimmedFilePath设置为./build/index.d.ts
- 执行合并:
bunx api-extractor run --local
执行后会在指定路径生成合并好的单文件类型定义。
可选:整合为npm脚本
为了方便使用,可以在package.json里添加脚本:
{ "scripts": { "build": "bun build ./index.ts --outdir ./build --declaration", "build:dts": "bunx dts-bundle-generator ./index.ts -o ./build/index.d.ts", "build:all": "npm run build && npm run build:dts" } }
之后执行bun run build:all就能一键生成js和合并后的d.ts。
内容的提问来源于stack exchange,提问作者Kleywalker
相关产品推荐
相关产品推荐

