如何优雅忽略 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 的类型提示依然有效
  • 可根据团队喜好选择生成路径或关闭生成
相关推荐
IMPYLH9 小时前
HTML 的 <td> 元素
前端·html
gnip9 小时前
Flutter GetX 三件套开发规范(Skill)
前端·flutter
张小姐的猫9 小时前
【AI大模型接入SDK】 —— 前端页面 & 项目总结与拓展
前端·数据结构·数据库·c++·人工智能·chatgpt
web打印社区10 小时前
远程打印:WebSocket 与 HTTP 轮询怎么选
前端·vue.js·websocket·网络协议·http·electron·pdf
吴声子夜歌10 小时前
HTML——庞杂的表单控件元素(一)
前端·html
天天喝旺仔10 小时前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html
明月_清风10 小时前
前端已死?别急,这可能只是所有行业的开始
前端·ai编程
明月_清风10 小时前
干了 6 年前端,我是怎么一步步转型到 AI 的?
前端·后端·ai编程
乘风gg10 小时前
花了 100 亿 Token 后,我发现 Code is cheap 是最大的谎言
前端·ai编程·claude
IMPYLH10 小时前
HTML 的 <textarea> 元素
前端·html