@quiteer/vite-plugins 插件总览
安装
bash
pnpm add -D @quiteer/vite-plugins说明:
- 本包已内置常用插件的封装(Vue、Vue JSX、UnoCSS、Progress、DevTools 等),无需单独安装对应的 Vite 插件包。
- 若启用 Vue/UnoCSS 等生态,请确保项目已安装核心库(如
vue、unocss或相关预设/组件库)。
首次运行保障(读取到环境变量)
- 若你的
vite.config.ts在顶层需要读取环境变量(例如loadEnv(mode)),建议在配置函数开头调用工具方法bootstrapEnv以保证第一次运行时.env已生成:
ts
import { defineConfig, loadEnv } from 'vite'
import { bootstrapEnv } from '@quiteer/vite-plugins'
export default defineConfig(async ({ mode }) => {
await bootstrapEnv({ mode, includePrefixes: ['VITE_'] })
const env = loadEnv(mode, process.cwd(), ['VITE'])
return { plugins: [/* ... */] }
})- 同时在插件列表中保留
envConfigPlugin,其负责后续变更的.env与类型生成(开发期热更新时自动重生成)。
快速上手
ts
import { defineConfig } from 'vite'
import {
fileChangeLoggerPlugin,
mockRouterPlugin,
envTypesPlugin,
envConfigPlugin,
removeConsolePlugin,
progress,
virtualHtmlPlugin,
Vue,
VueJsx,
UnoCSS
} from '@quiteer/vite-plugins'
export default defineConfig({
plugins: [
Vue(),
VueJsx(),
UnoCSS(),
fileChangeLoggerPlugin(),
mockRouterPlugin(),
envTypesPlugin(),
envConfigPlugin({ obfuscate: true, obfuscateSkipKeys: ['testUrl'], requiredKeys: ['desc'] }),
removeConsolePlugin({ level: 'warn' }),
progress(),
virtualHtmlPlugin({
config: {
title: 'Demo Title',
script: { src: 'https://unpkg.com/lodash@4.17.21/lodash.min.js', async: true, position: 'body-append' },
style: { src: '/src/style.css', position: 'head' }
}
})
]
})插件列表
- 文件改动日志:美观打印新增/修改/删除文件路径与时间戳
- API Mock 路由:将
/api/*自动映射到<root>/mock/*.json- 文档:mock-router
- 环境变量类型生成:扫描
.env*自动生成env.d.ts- 文档:env-types
- 环境配置生成:读取
env.config.ts生成.env.local/.env.{mode}.local并支持混淆、校验与类型- 文档:env-config
- 移除 console:按等级剔除
console.*调用(含.vue脚本) - 虚拟 HTML 生成:通过配置对象生成根
index.html,实现“无 HTML 文件”开发与构建- 文档:virtual-html
- 构建进度条(第三方集成):
vite-plugin-progress- 文档:progress
- Vue 集成:
@vitejs/plugin-vue的一键启用封装 - Vue JSX:
@vitejs/plugin-vue-jsx的一键启用封装 - UnoCSS:
@unocss/vite的一键启用封装 - 工具方法:
bootstrapEnv用于在配置函数开头预生成.env与类型,保障首次运行即可读取环境变量
单独使用
ts
import { defineConfig } from 'vite'
import {
fileChangeLoggerPlugin,
mockRouterPlugin,
envTypesPlugin,
envConfigPlugin,
removeConsolePlugin,
progress,
virtualHtmlPlugin
} from '@quiteer/vite-plugins'
export default defineConfig({
plugins: [
fileChangeLoggerPlugin(),
mockRouterPlugin(),
envTypesPlugin(),
// 按 mode 读取 env.config.ts,生成 .env 文件并注入 import.meta.env
envConfigPlugin({ obfuscate: true, obfuscateSkipKeys: ['testUrl'] }),
removeConsolePlugin({ level: 'warn' }),
progress(),
// 无模板开发:直接通过配置生成 index.html
virtualHtmlPlugin({ config: { title: 'Title', script: { src: '/demo.js', position: 'body-append' } } })
]
})约定与安全
- 仅将符合前缀(默认
envPrefix或VITE_)的变量生成到import.meta.env,避免泄露私密变量 - Mock 路由仅在开发模式启用,不影响生产构建与预览
- 控制台输出统一使用
kolorist美化,信息更易识别 - 键名规范:插件会将驼峰键名转为下划线大写(
testUrl -> VITE_TEST_URL,baseURL -> VITE_BASE_URL)
使用建议
- 在
env.config.ts中集中维护多环境变量,必要时开启obfuscate但避免存储敏感信息 - 使用虚拟 HTML 插件时合理选择脚本位置(如
body-append)与async,降低首屏阻塞 - 组合使用进度与文件改动日志,提升开发反馈质量
- Vue/UnoCSS 封装可直接通过导出的插件函数启用,减少样板代码
- 如需在
vite.config.ts顶层读取环境,使用async defineConfig并在开头调用bootstrapEnv({ mode })
插件详解(概要)
envConfigPlugin(options):- 读取
env.config.ts,合并default + mode,生成.env.local/.env.{mode}.local - 支持
requiredKeys校验与obfuscate混淆;类型文件生成可配置typesOutput - 键名规范:自动将驼峰转为下划线大写(
baseURL -> VITE_BASE_URL)
- 读取
envTypesPlugin(options):- 扫描
.env*生成env.d.ts,为import.meta.env提供提示
- 扫描
virtualHtmlPlugin(options):- “无模板”开发,将
title/script/style/tags插入到输出目录的index.html或多页
- “无模板”开发,将
fileChangeLoggerPlugin(options):- 开发期打印文件新增、修改、删除日志,提升变更可见性
mockRouterPlugin(options):- 将
/api/*请求映射到mock/*.json,适合前后端分离场景的快速联调
- 将
removeConsolePlugin(options):- 剔除
console.*调用(支持.vue),减少生产日志污染;可按等级配置
- 剔除
Progress():- 构建/启动过程进度条提示
Vue()/VueJsx()/UnoCSS():- 对应插件的封装函数,减少样板代码
bootstrapEnv(opts):- 工具方法,配置函数开头调用,保证首次运行前
.env与类型就绪
- 工具方法,配置函数开头调用,保证首次运行前
参数约定
- 插件函数支持传入“布尔开关”或“参数对象/数组”(按各插件文档说明)
- 常用导出:
Vue、VueJsx、UnoCSS、fileChangeLoggerPlugin、mockRouterPlugin、envTypesPlugin、envConfigPlugin、removeConsolePlugin、progress、virtualHtmlPlugin、bootstrapEnv