TypeScript编译后dist根目录未生成index.d.ts问题排查
问题排查与解决方案
核心问题
升级package.json后,TypeScript编译不再在dist根目录生成包含shared导出的index.d.ts,仅dist/shared目录存在该文件,导致依赖项目安装时出现类型查找错误。
排查步骤与修复方案
1. 检查package.json的types字段
确认package.json中是否正确配置了类型入口:
{ "types": "dist/index.d.ts" }
如果之前配置的是根目录的index.d.ts,升级后被误改为dist/shared/index.d.ts,会导致依赖项目无法找到顶层类型入口,改回即可。
2. 验证根目录是否存在类型导出入口
检查项目根目录的src下是否有index.ts文件,内容需重新导出shared模块的所有内容:
// src/index.ts export * from './shared';
如果该文件丢失或被排除在编译范围外,tsc不会生成根目录的index.d.ts。同时确认主tsconfig.json的include字段包含该文件:
{ "include": ["src/**/*"] }
3. 检查build脚本的完整性
查看package.json中的build脚本,确认是否丢失了生成/拷贝根目录index.d.ts的步骤。比如之前可能有手动拷贝的命令:
{ "scripts": { "build": "rimraf dist && tsc && cp dist/shared/index.d.ts dist/index.d.ts" } }
如果升级package.json时不小心删除了cp(Windows环境用copy)步骤,补回即可。
4. 排查tsconfig的declarationDir配置
确认主tsconfig.json的declarationDir是否指向dist根目录:
{ "compilerOptions": { "declarationDir": "./dist" } }
如果该配置被改为./dist/shared,会导致所有类型文件生成在子目录,调整回根目录即可。
5. 手动测试tsc编译行为
直接在终端执行tsc命令,查看dist目录是否生成根目录的index.d.ts:
- 如果生成,说明是build脚本中的清理或后续步骤删除了该文件,检查
rimraf或其他清理命令是否误删; - 如果不生成,说明是tsconfig的
include/exclude或导出逻辑问题,回到步骤2、4排查。
内容的提问来源于stack exchange,提问作者dee
相关产品推荐
相关产品推荐

