当前位置: 首页 > news >正文

vite | vite-plugin-dts 插件生成类型文件 的安装和使用

vite-plugin-dts 是一个用于 生成 TypeScript 类型声明文件的插件,适用于 Vite 项目。

库模式lib{ }),默认不会生成任何类型文件——》解决:使用单独的 插件 vite-plugin-dts 来完成生成类型文件


vite-plugin-dts 的安装和使用

① 安装:npm install vite-plugin-dts -D

② 配置:在 vite.config.ts中 引入 import dts from 'vite-plugin-dts'plugins的数组中 添加 dts()

若之前配置过

1. 删除文件  Remove-Item -Recurse -Force node_modules dist package-lock.json

2. 再重新 安装包 npm install

3. 打包 npm run build-only 

这里的 build-only ,在包文件中配置了 "build-only": "vite build --config vite.config.ts",

当前打包出来的文件,有部分是不需要打包的。如 VNode.d.tsmain.d.ts 是在调试时使用的,不需要将其添加到生产环境

dts 的配置选项

import { defineConfig } from 'vite'
import dts from 'vite-plugin-dts'export default defineConfig({plugins: [dts({// 插件配置选项tsconfigPath: './tsconfig.build.json',     // 配置文件路径rollupTypes: true,  // 支持 Rollup 的类型声明,可将所有的文件合并到一个文件中insertTypesEntry: true,  // 在 package.json 中插入 types 字段outDir: 'dist/types',    // 生成单独的文件夹})],
})

配置选项

  • insertTypesEntry:是否在 package.json 中插入 types 字段,指向生成的类型声明文件。

  • tsconfigPath:指定要使用的 tsconfig.json 文件路径。(tsconfigPath:'./tsconfig.xxx.json'  ,添加 ts 配置文件 来限制打包的文件内容 )

  • rollupTypes:如果使用 Rollup 构建,它会尝试自动生成类型声明文件。(rollupTypes: true; 将所有的文件合并到一个文件中

  • exclude:可以通过该字段排除某些目录或文件不生成类型声明。

  • 默认情况下,所有生成的定义文件源文件生成的文件结构相同。

生成类型声明

在开发过程中,vite-plugin-dts 会自动生成类型声明文件并将其保存到输出目录,通常在 dist 目录中。如果要手动生成,可以通过以下命令运行:npm run build

然后在构建输出目录中,你会看到生成的 .d.ts 文件。


使用 dts 限制打包文件内容

  1. 可以在 dts 插件中,使用 tsconfigPath:'./tsconfig.xxx.json'  添加 ts 配置文件 来限制打包的文件内容 

import { defineConfig } from 'vite'
import dts from 'vite-plugin-dts'export default defineConfig({plugins: [dts({// 插件配置选项tsconfigPath: './tsconfig.build.json',     // 配置文件路径rollupTypes: true,  // 支持 Rollup 的类型声明,可将所有的文件合并到一个文件中insertTypesEntry: true,  // 在 package.json 中插入 types 字段})],
})

  1. tsconfig.build.json 配置文件中,在 include 选项中限制类型。

例子:通过新建一个文件tsconfig.build.json,复制 tsconfig.json 中的内容,并且在文件中 修改配置"include":["src/index.ts", "src/components/**/*", "src/hooks/**/*"],用于指名需要打包 index.ts、components下的文件、hooks下的文件

注: * 匹配任意文件,** 匹配任意数量的子文件夹(不管几层)

// tsconfig.build.json 文件
{// 用于打包构建。注意事项:不要 include 输入外部的ts文件,避免污染dts输出;不要引用其他tsconfig文件"extends": "@vue/tsconfig/tsconfig.dom.json","include": ["src/index.ts", "src/components/**/*", "src/hooks/**/*"],"compilerOptions": {"baseUrl": ".","paths": {"@/*":["src/*"]},"types": ["vue-macros/macros-global" /* ... */],},"vueCompilerOptions": {"plugins": ["vue-macros/volar"]},"references": [{"path": "./tsconfig.node.json"}]}

此时,即可生成目标的类型文件。

http://www.lryc.cn/news/576870.html

相关文章:

  • Python爬虫实战:研究untangle库相关技术
  • MYSQL的基础信息如何存放
  • PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines
  • 实战四:基于PyTorch实现猫狗分类的web应用【2/3】
  • Rust函数与所有权
  • Webpack中的Loader详解
  • SpringBoot医疗用品销售网站源码
  • 什么是P2P 网络(Peer-to-Peer Network)
  • (八)聚类
  • KPL战队近五年热度指数
  • 如何解决大语言模型微调时的模型遗忘问题?
  • MYSQL与PostgreSQL的差异
  • Segment Anything in High Quality之SAM-HQ论文阅读
  • ​扣子Coze飞书多维表插件-创建数据表
  • 机器学习9——决策树
  • MyBatis修改(update)操作
  • 【PaddleOCR】PaddlePaddle 3.0环境安装,及PaddleOCR3.0 快速入门使用
  • 企业级路由器技术全解析:从基础原理到实战开发
  • 学习使用Visual Studio分析.net内存转储文件的基本用法
  • cJSON 使用方法详解
  • 华为云 Flexus+DeepSeek 征文|华为云 Flexus 云服务 Dify-LLM 平台深度部署指南:从基础搭建到高可用实践
  • NLP随机插入
  • 如果将Word里每页的行数设置成50行
  • jenkins启动报错,一直无法启动
  • 高并发电商返利 APP 架构设计:从淘客佣金模型到分布式导购系统的技术落地
  • [分布式并行] 流水线并行 PP(NaivePP/GPipe/F-then-B/PipeDream/1F1B)
  • MySQL数据库的增删改查
  • 茶叶根茎分割数据集介绍与应用
  • RNN人名分类器案例
  • Android大图加载优化:BitmapRegionDecoder深度解析与实战