如何将node_modules依赖的d.ts类型打包嵌入SDK声明文件?
实现类型内联的解决方案
TypeScript自带的tsc编译只会保留对外部模块的类型引用,没法直接把node_modules里的内部类型嵌入到生成的.d.ts文件中。要达成你要的效果,推荐用Microsoft API Extractor——这是专门为SDK开发设计的工具,能自动处理依赖类型的内联,同时解决内部模块相互引用的问题。
具体操作步骤:
- 安装API Extractor
npm install @microsoft/api-extractor --save-dev
- 生成配置文件
在项目根目录执行初始化命令:
npx api-extractor init
这会生成api-extractor.json,重点修改以下几项:
mainEntryPointFilePath:指定你tsc编译后的入口.d.ts路径,比如./dist/index.d.tsdtsRollup.untrimmedFilePath:设置最终生成的合并类型文件路径,比如./dist/index.bundled.d.tscompiler.skipLibCheck:设为true,避免内部模块的类型检查冲突
- 生成内联后的类型文件
先正常用tsc编译你的代码,再运行API Extractor:
npx api-extractor run --local
完成后,dist/index.bundled.d.ts里就会包含内联的TestType定义,不再有对@internal-types/module1的引用,完全符合你的预期效果。
为什么不推荐手动复制模块?
你之前尝试的手动复制+修改路径的方式,很容易因为内部模块之间的相互引用陷入混乱——API Extractor会自动递归解析所有依赖的类型,处理重名、循环引用等问题,比手动操作可靠得多。
补充配置
如果@internal-types/*是私有npm包,记得在api-extractor.json的allowedPackageNames数组里添加这个包名前缀,确保工具能正确识别并处理这些内部类型。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

