使用Trae开发一个自动生成TS类型定义的vite插件

前言

作为一个前端开发,你是否也经常遇到这样的烦恼:

  • 对接后端API时,需要手动编写大量TypeScript类型定义
  • API接口变更时,又要手动同步更新类型定义
  • 调试时因为类型不匹配而浪费大量时间

这两天我用Trae开发了一个Vite插件------vite-plugin-auto-api-types,它能自动帮我从API响应生成TypeScript类型定义,彻底解决了这些痛点!今天就来和大家分享一下这个插件

一、什么是vite-plugin-auto-api-types?

vite-plugin-auto-api-types它能在开发过程中自动捕获API请求和响应,然后根据响应数据结构生成TypeScript类型定义文件。

简单来说,你只需要正常调用API,插件就会自动帮你生成对应的类型定义,再也不用手动写那些繁琐的interface了!

二、快速上手

1. 安装插件

bash 复制代码
# 使用npm
npm install vite-plugin-auto-api-types -D

# 使用yarn
yarn add vite-plugin-auto-api-types -D

# 使用pnpm
pnpm add vite-plugin-auto-api-types -D

2. 配置插件

在vite.config.ts中添加插件配置:

typescript 复制代码
import { defineConfig } from 'vite'
import AutoApiTypes from 'vite-plugin-auto-api-types'

export default defineConfig({
  plugins: [
    AutoApiTypes({
      // 配置项
      outputDir: 'src/types',  // 类型文件输出目录
      cacheSize: 100,         // 缓存大小
      moduleMap: {
        // 按URL前缀分组生成模块化类型文件
        '/api/user': 'users',
        '/api/product': 'products'
      },
      typeNameGenerator: (url) => {
        // 自定义类型名称生成规则
        return url.replace(/\/|\./g, '_')
      }
    })
  ]
})

3. 使用插件

配置完成后,只需要正常发起API请求,插件就会自动生成类型定义文件:

typescript 复制代码
// 发起API请求
fetch('/api/user/list')
  .then(res => res.json())
  .then((data: api_user_list) => {
    // 插件会自动根据data的结构生成类型定义
    console.log(data)
  })

三、核心特性

1. 自动类型生成

插件会自动捕获所有API响应,并根据响应数据结构生成对应的TypeScript类型定义。支持各种复杂的数据结构,包括嵌套对象、数组、树形结构等。

2. 模块化类型文件

可以根据URL前缀将API类型分组到不同的模块文件中,保持类型定义的整洁和可维护性:

typescript 复制代码
// vite.config.ts
AutoApiTypes({
  moduleMap: {
    '/api/user': 'users',
    '/api/product': 'products',
    '/api/order': 'orders'
  }
})

这样配置后,插件会生成三个类型文件:users.d.tsproducts.d.tsorders.d.ts

3. 树形结构类型支持

插件特别优化了对树形结构数据的支持,会自动生成清晰的节点类型定义:

typescript 复制代码
// 自动生成的树形结构类型
export interface MenuTreeNode {
  id: number;
  name: string;
  path: string;
  children?: MenuTreeNode[];
}

export interface GetMenuListResponse {
  code: number;
  message: string;
  data: MenuTreeNode[];
}

4. 自定义响应路径

支持从API响应中提取特定部分生成类型定义:

typescript 复制代码
// vite.config.ts
AutoApiTypes({
  responsePath: 'data.list'  // 只从响应的data.list部分生成类型
})

5. LRU缓存机制

内置LRU缓存机制,优化内存使用,避免重复生成相同的类型定义:

typescript 复制代码
// vite.config.ts
AutoApiTypes({
  cacheSize: 100  // 设置缓存大小为100
})

四、实际应用体验

1. 开发效率提升

以前对接一个API,需要先看文档,然后手动编写类型定义,至少需要10分钟。现在只需要调用一次API,插件就会自动生成类型定义,不到1分钟就能搞定!

2. 类型准确性提高

手动编写类型定义很容易出错,特别是对于复杂的数据结构。现在由插件自动生成,完全基于实际API响应,类型准确性100%!

3. 接口变更自动同步

当后端API接口变更时,只需要重新调用一次API,插件就会自动更新类型定义,再也不用手动同步了!

五、总结

vite-plugin-auto-api-types是一个非常实用的Vite插件,它能帮你自动生成API类型定义,大大提升开发效率。主要优势包括:

  1. 自动生成:无需手动编写类型定义
  2. 准确可靠:基于实际API响应生成,类型准确
  3. 智能优化:支持树形结构、模块化、缓存等高级特性
  4. 易于配置:提供丰富的配置项,满足各种需求

最后的话

感兴趣的同学可以去GitHub 查看源码

也可以直接在npm上安装使用:

bash 复制代码
npm install vite-plugin-auto-api-types -D
相关推荐
xhxxx16 小时前
Vite + React 黄金组合:打造秒开、可维护、高性能的现代前端工程
前端·react.js·vite
San3016 小时前
现代前端工程化实战:从 Vite 到 Vue Router 的构建之旅
vue.js·vite·vue-router
fighting不想说话1 天前
Vite中resolve.alias原理
vite
AY呀2 天前
Vite:现代前端构建工具的革命与实战指南
前端·vue.js·vite
白兰地空瓶2 天前
一行 npm init vite,前端工程化的世界就此展开
前端·vue.js·vite
LYFlied2 天前
【一句话概述】Webpack、Vite、Rollup 核心区别
前端·webpack·node.js·rollup·vite·打包·一句话概述
Irene19913 天前
CLI 与 Vite 创建项目对比(附:最优解 create-vue)
vue·vite·cli·项目创建
Airene5 天前
Vite 8 发布 beta 版本了,升级体验一下 Rolldown
前端·vite
诸神缄默不语6 天前
用Vite创建Vue3前端项目
前端·vite·cue3