使用vite时如何解决两个依赖库d.ts文件重复声明的问题?
无依赖排除的冲突解决方法
以下三种方案都不需要移除你项目中的两个冲突依赖:
方案1:全局跳过第三方库类型校验
在tsconfig.json的compilerOptions配置项中添加"skipLibCheck": true,该配置只会跳过所有第三方依赖的类型冲突校验,不会影响项目业务代码的类型检查逻辑,是改造成本最低的方案。
配置示例:{ "compilerOptions": { // 原有配置保留,新增以下字段 "skipLibCheck": true } }方案2:定向覆盖冲突类型
如果你需要保留第三方库的类型检查能力,可在项目中新增自定义声明文件覆盖冲突定义,步骤如下:- 在
src目录下新建type-override.d.ts文件 - 按以下模板修改冲突的类型声明(将示例中的包名、接口名替换为你实际冲突的依赖和属性所属接口):
declare module '冲突的包名A' { // 先导出原有包的所有类型 export * from '冲突的包名A/dist/index.d.ts' // 覆盖冲突的接口定义,调整src属性的类型避免重复冲突 export interface 冲突属性所属的接口名 { src: string | Record<string, any> } }- 将该声明文件路径加入
tsconfig.json的include数组即可生效。
- 在
方案3:调整svgr插件配置规避冲突
如果类型冲突来自vite-plugin-svgr生成的SVG模块声明,可修改插件配置调整类型导出规则:import { defineConfig } from 'vite' import svgr from 'vite-plugin-svgr' export default defineConfig({ plugins: [ svgr({ // 将SVG导出为默认导出,避免命名导出的src属性和其他声明冲突 exportAsDefault: true, typescriptOptions: { exportType: 'default' } }) ] })
附报错截图:
内容的提问来源于stack exchange,提问作者pepeevich
相关产品推荐
相关产品推荐

