如何优雅忽略 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 的类型提示依然有效
  • 可根据团队喜好选择生成路径或关闭生成
相关推荐
daols881 分钟前
vue 甘特图 vxe-gantt 自定义任务条插槽模板的用法
vue.js·vxe-gantt
迦南giser2 分钟前
前端性能——传输优化
前端
小白_ysf7 分钟前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
2501_944448001 小时前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
人工智能训练7 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪7 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9228 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233228 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882110 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13610 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js