使用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.
相关产品推荐
相关产品推荐

