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

使用vite-plugin-dts打包Vite库类型,如何避免src生成.d.ts文件?

解决vite-plugin-dts打包类型时src目录生成.d.ts的问题

方案1:指定临时目录存零散类型文件,构建后自动清理

在tsconfig.json里把生成的零散.d.ts导向临时目录,避免污染src:

{
  "compilerOptions": {
    "emitDeclarationOnly": true,
    "declarationDir": "./temp-dts" // 把零散类型文件扔到临时目录
  }
}

然后在package.json的构建脚本里加清理步骤,确保临时目录用完就删:

{
  "scripts": {
    "build": "rimraf temp-dts dist && vite build",
    "postbuild": "rimraf temp-dts"
  }
}

这样vite-plugin-dts会从临时目录读取文件合并成最终的main.d.ts,构建完成后临时目录也会被删掉。

方案2:用单独的tsconfig处理类型打包

不想改主tsconfig.json的话,新建一个tsconfig.dts.json专门给类型打包用:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "emitDeclarationOnly": true,
    "declarationDir": "./temp-dts"
  }
}

然后在vite.config.ts里指定这个配置文件:

import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';

export default defineConfig({
  plugins: [
    dts({
      rollupTypes: true,
      tsConfigFilePath: './tsconfig.dts.json'
    })
  ]
});

同样配合上面的清理脚本,主配置不受影响,也不会污染src。

方案3:升级API Extractor解决原始报错(从根源避免问题)

你遇到的原始错误是因为vite-plugin-dts依赖的API Extractor自带的TS版本(5.0.4)比你项目的5.2.2旧。直接升级API Extractor到适配TS5.2的版本:

npm install @microsoft/api-extractor@latest --save-dev

之后删掉tsconfig.json里的emitDeclarationOnly,重新开rollupTypes: true,应该就不会再出现语义信息错误了,自然也不需要生成零散的.d.ts文件。


内容的提问来源于stack exchange,提问作者Adam B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:16:12