You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yarn包构建时生成dist根目录的index.d.ts类型声明文件?

问题原因
  • 核心原因是TypeScript编译器(tsc)默认仅会为每个输入的.ts/.tsx源文件生成对应的.d.ts声明文件,你没有在src根目录创建入口文件index.ts(或index.tsx),自然不会生成对应到dist根目录的index.d.ts文件。
解决步骤

步骤1:创建src入口文件

在src根目录新建index.ts(如果要导出React组件也可以用index.tsx),在文件中统一导出所有你需要对外暴露的内容,示例:

// src/index.ts
// 导出组件
export { default as Plug } from './components/app/Plug/Plug';
export { default as OtherComponent } from './components/xxx/OtherComponent';
// 导出工具函数等
export * from './utils/common';

注意:必须保证文件内存在export相关语句,否则ts会将其识别为全局脚本,不会生成对应声明文件。如果暂时没有要导出的内容,可先写export {}占位

步骤2:验证配置合理性

你当前的tsconfig配置已经开启了"declaration": true,outDir也配置为dist,无需额外调整tsconfig参数。如果执行完步骤1后重新build还是没有生成index.d.ts,可检查以下两点:

  • 确认src/index.ts没有被exclude规则过滤:你当前的exclude规则仅排除node_modules和测试文件,不会拦截入口文件,正常不会有问题
  • 确认build脚本执行时没有报错:如果tsc编译阶段报错,会中断声明文件生成

可选:生成单文件合并的声明文件

如果你需要把所有分散的.d.ts声明全部合并到根目录的单个index.d.ts中,而非保留目录结构,可以使用dts-bundle-generator工具:

  1. 安装依赖:yarn add -D dts-bundle-generator
  2. 修改package.json的build脚本,在tsc执行完成后新增打包命令:
"scripts": {
  "build": "yarn run clean && tsc --project tsconfig.json && tscpaths -p tsconfig.json -s ./src -o ./dist && dts-bundle-generator --out-file dist/index.d.ts src/index.ts"
}

内容的提问来源于stack exchange,提问作者Shadowman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:15:05