如何优雅忽略 components.d.ts的更新

大家好,我是奈德丽

在使用 Vue3 + Vite 的项目中,unplugin-vue-components是一个非常实用的插件,它可以 自动按需导入组件 ,免去手动 import 的麻烦。同时,它会生成一个 components.d.ts 文件,为 TypeScript 提供全局组件类型提示。

不过,很多团队会遇到一个问题:

每次新增组件,components.d.ts 都会变动,需要提交到 Git,非常烦人。有没有办法不提交,又不影响功能?

本文就来分享一个 完整、优雅的解决方案


1️⃣ 背景与问题

为什么我会这么反感?

每次用到新组件,它都会自动更新一次,奈何我这项目就是一个javascript项目,typescript都没用到,我不喜欢在js项目里看到ts文件,你给我生成一个components.d.ts,而且我压根就不想去提交这个文件的更新

  1. 文件每次更新组件都会变化
  2. Git 会跟踪,导致每次都要提交
  3. 对于 CI/CD 或团队协作,非常麻烦

2️⃣ 解决方案

奈德丽语录:看到什么不爽,那就干掉他

步骤 1:忽略文件

.gitignore 中添加:

bash 复制代码
# 忽略自动生成的组件类型声明
src/components.d.ts

注意:如果文件之前已经提交到 Git,仅仅添加 .gitignore 不会生效,需要先从 Git 索引中移除。


步骤 2:从 Git 中移除(保留本地)

执行:

bash 复制代码
git rm --cached src/components.d.ts

解释:

  • --cached 表示 只从 Git 索引中删除
  • 本地文件仍然保留
  • 确保路径和实际文件一致

步骤 3:提交更改

cmd 复制代码
git add .gitignore
git commit -m "chore: 忽略自动生成的 components.d.ts"
git push

✅ 完成后:

  • 本地 IDE 仍然可以补全组件类型
  • Git 不再跟踪 components.d.ts
  • 新增组件不会再频繁修改提交

步骤 4:可选优化

在vite.config.js中可以增加对Components的配置,有一个dts属性,可以指定components.d.ts的生成目录,如果不设置的化,默认会自动生成到根目录下

方案 A:生成到临时目录

可以把类型文件生成到 node_modules/.types,彻底不提交:

vite.config. 复制代码
Components({
  dts: 'node_modules/.types/components.d.ts',
})
  • IDE 仍然识别
  • Git 自动忽略 node_modules

项目配置图及效果如图

方案 B:关闭文件生成

像我们项目没有用到typescript,所以可以直接选择关闭类型生成

js 复制代码
Components({
  dts: false, // 不生成 d.ts 文件
})

3️⃣ 小结

  • components.d.ts类型声明文件,不影响运行时
  • 可以安全地 从 Git 中移除并忽略
  • 本地 IDE 的类型提示依然有效
  • 可根据团队喜好选择生成路径或关闭生成
相关推荐
我是若尘4 小时前
event.currentTarget 、event.target 傻傻分不清楚?
前端
Dontla4 小时前
前端埋点(tracking)技术介绍(记录用户行为和页面性能数据)(埋点代码)ajax埋点、img埋点、navigator.sendBeacon埋点
前端·javascript·ajax
Thomas21434 小时前
sparkml 多列共享labelEncoder
javascript·ajax·spark-ml
533_4 小时前
[css] flex 布局设置文字不自动换行
前端·css
guojb8244 小时前
元数据驱动:打造动态灵活的Vue键值对表格组件
前端·vue.js·element
学Linux的语莫4 小时前
langchain输出解析器
java·前端·langchain
文心快码BaiduComate4 小时前
您的前端开发智能工作流待升级,查收最新 Figma2Code!
前端·后端·程序员
老华带你飞5 小时前
水果购物网站|基于java+vue的水果购物网站系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·水果购物网站系统
狗头大军之江苏分军5 小时前
当AI小智遇上股票:一个不写死代码的智能股票分析工具诞生记
前端·人工智能·python