更新记录
1.0.0(2026-06-27) 下载此版本
首个稳定版本发布,API 稳定性承诺与生产就绪标志
里程碑说明
经过 0.x 系列(0.0.1 - 0.2.7)共 27 个版本的迭代,插件体系从最初的 2 个插件(copyFile、injectIco)发展到 15 个插件覆盖构建全生命周期,common 工具模块从零散函数发展为 14 个规范化子模块,插件开发框架(BasePlugin、Logger、Validator、createPluginFactory)趋于成熟。1.0.0 版本标记 API 稳定性,后续变更将严格遵循语义化版本规范。
与 0.x 的主要差异
| 维度 | 0.x(演进期) | 1.0.0(稳定期) |
|---|---|---|
| API 稳定性 | 允许 Breaking Change | 严格遵循 semver,破坏性变更需升主版本号 |
| 插件数量 | 从 2 个逐步增加到 15 个 | 15 个插件完整就绪 |
| 导出结构 | 单入口 ./plugins |
7 个分组子路径 + 15 个插件单独子路径 + 主入口向后兼容 |
| Common 工具 | 从零散函数到 14 个规范化子模块 | 14 个子模块稳定结构 |
| 类型安全 | 逐步补全 | 完整 TypeScript 类型 + global.d.ts 全局声明 |
| 配置体验 | 部分参数必填 | 所有插件零配置可用(参数可选化) |
| 版本号管理 | 手动同步 | 构建时自动注入 __PLUGIN_VERSION__ |
| 错误处理 | 各插件自行处理 | 统一 errorStrategy 策略(throw / log / ignore) |
| 钩子注册 | 手动包裹 enabled 检查 | registerHook / registerOrderedHook 自动包裹 |
插件完整清单(15 个,7 个分组)
| 分组 | 插件 | 功能描述 | 执行时机 |
|---|---|---|---|
| analyze | buildProgress | 终端构建进度条,支持 bar/spinner/minimal | 构建期 |
| analyze | bundleAnalyzer | 构建产物体积分析,生成 JSON/HTML 报告 | enforce: 'post' |
| compress | compressAssets | gzip / brotli 压缩,生成 .gz / .br 文件 | enforce: 'post' |
| compress | imageOptimizer | 图片压缩与格式转换(sharp + svgo) | enforce: 'post' |
| copy | assetManifest | 资源清单生成,支持 vite/webpack/custom 格式 | enforce: 'post' |
| copy | copyFile | 文件/目录复制,支持增量与并发 | enforce: 'post' |
| generate | autoImport | 自动导入,支持通配符 '*' 与目录扫描 |
enforce: 'pre' |
| generate | generateRouter | 根据 pages.json 生成路由配置与类型声明 | configResolved |
| generate | generateVersion | 版本号生成,支持多种格式与占位符 | 构建期 |
| guard | envGuard | 环境变量校验,支持多类型与运行时守卫 | enforce: 'post' |
| inject | faviconManager | 网站图标管理,支持字符串简写配置 | transformIndexHtml |
| inject | htmlInject | HTML 内容注入,7 种位置与条件注入 | transformIndexHtml |
| inject | loadingManager | 全局 Loading 状态管理,请求自动拦截 | transformIndexHtml |
| inject | versionUpdateChecker | 运行时版本更新检查,三种提示 UI | transformIndexHtml |
| proxy | proxyManager | 开发代理管理,支持路径匹配与延迟模拟 | configureServer |
Common 工具模块(14 个子模块)
| 子模块 | 核心导出 | 来源 |
|---|---|---|
common/code |
JS_KEYWORDS、stripCommentsAndStrings |
autoImport |
common/compress |
calculateGzipSize |
bundleAnalyzer |
common/concurrency |
runWithConcurrency |
imageOptimizer |
common/env |
parseEnvContent |
envGuard |
common/format |
parseTemplate、parseTemplateWithDelimiter、parsePluginTemplate、formatDate、formatFileSize、calcRatio |
多处复用 |
common/fs |
writeFileSyncSafely、shouldUpdateFileContent、scanAndMapFiles、deleteFiles、resolveReportPath 等 |
多处复用 |
common/hash |
generateRandomHash |
generateVersion |
common/html |
injectBeforeTag、injectHeadAndBody、escapeHtmlAttr |
htmlInject |
common/object |
deepMerge |
factory |
common/path |
normalizePath、isExtensionIncluded、isPathExcluded、isPreCompressed |
多处复用 |
common/script |
makeCallback |
loadingManager |
common/string |
toCamelCase、toPascalCase、stripJsonComments、escapeRegex |
autoImport |
common/ui |
ANSI、SPINNER_FRAMES、stripAnsi |
buildProgress |
common/validation |
Validator、validateGlobalName、validateNoScriptInTemplate、validateCallbackFields 等 |
全局 |
插件开发框架
BasePlugin 抽象类:所有插件的基类,提供完整的生命周期管理
| 能力 | 方法/属性 | 说明 |
|---|---|---|
| 配置合并 | mergeOptions |
深度合并基础默认值、插件默认值与用户配置 |
| 日志记录 | logger |
每个实例独立的 PluginLogger 代理 |
| 配置验证 | validator + validateOptions |
泛型 Validator 流式验证 |
| 生命周期 | onConfigResolved / destroy |
配置解析完成回调 + 销毁清理 |
| 错误处理 | safeExecute / safeExecuteSync / handleError |
按 errorStrategy 统一处理错误 |
| 钩子注册 | registerHook / registerOrderedHook / registerTransformIndexHtml |
自动包裹 enabled 检查与错误处理 |
| 插件转换 | toPlugin |
转换为 Vite 插件对象,自动注册 configResolved 与 closeBundle |
createPluginFactory 工厂函数:支持选项标准化器(OptionsNormalizer),允许插件接受非对象类型的简写配置
Logger 单例日志系统:以实例 ID 为 key 管理每个插件实例的日志配置,避免同类型多实例冲突,支持 register / unregister / destroy 生命周期
Validator 泛型验证器:链式 API(required / enum / minValue / maxValue / custom 等),编译时类型安全保障
子路径导出总览
// 主入口(向后兼容)
import { compressAssets, generateRouter } from '@meng-xi/vite-plugin'
// 按分组导入(推荐,利于 Tree-shaking)
import { compressAssets } from '@meng-xi/vite-plugin/plugins/compress'
import { generateRouter } from '@meng-xi/vite-plugin/plugins/generate'
import { loadingManager } from '@meng-xi/vite-plugin/plugins/inject'
// 单插件导入
import { generateRouter } from '@meng-xi/vite-plugin/plugins/generate/generate-router'
// Common 工具
import { parsePluginTemplate } from '@meng-xi/vite-plugin/common/format'
import { deepMerge } from '@meng-xi/vite-plugin/common/object'
// 框架能力
import { BasePlugin, createPluginFactory } from '@meng-xi/vite-plugin/factory'
import { Logger } from '@meng-xi/vite-plugin/logger'
完整子路径清单:
.— 主入口(导出全部)./common+ 14 个 common 子模块(code/compress/concurrency/env/format/fs/hash/html/object/path/script/string/ui/validation)./factory— BasePlugin、createPluginFactory、类型定义./logger— Logger 单例、PluginLogger./plugins+ 7 个分组子路径(analyze/compress/copy/generate/guard/inject/proxy)+ 15 个插件单独子路径
生产就绪声明
- Vite 兼容性:支持 Vite 5.x - 7.x(
peerDependencies: vite >=5.0.0 <8.0.0) - TypeScript 支持:完整类型定义,
types字段指向.d.ts文件 - 双格式输出:同时提供 ESM(
.mjs)与 CJS(.cjs)构建产物 - 可选依赖:
sharp、svgo为可选依赖,不可用时优雅降级 - 零配置可用:所有插件参数可选化,提供合理默认值
0.2.7(2026-06-26) 下载此版本
插件按功能分组导出,修复 generateRouter 类型注解生成缺陷
插件分组导出(新增)
变更:将 15 个插件按功能划分为 7 个分组,每个分组提供独立子路径导出,支持按需导入与 Tree-shaking
| 分组 | 包含插件 | 子路径 |
|---|---|---|
| analyze | buildProgress、bundleAnalyzer | ./plugins/analyze |
| compress | compressAssets、imageOptimizer | ./plugins/compress |
| copy | assetManifest、copyFile | ./plugins/copy |
| generate | autoImport、generateRouter、generateVersion | ./plugins/generate |
| guard | envGuard | ./plugins/guard |
| inject | faviconManager、htmlInject、loadingManager、versionUpdateChecker | ./plugins/inject |
| proxy | proxyManager | ./plugins/proxy |
// 0.2.6:单入口导入全部插件
import { compressAssets, generateRouter, loadingManager } from '@meng-xi/vite-plugin/plugins'
// 0.2.7:按组导入,利于 Tree-shaking
import { compressAssets } from '@meng-xi/vite-plugin/plugins/compress'
import { generateRouter } from '@meng-xi/vite-plugin/plugins/generate'
import { loadingManager } from '@meng-xi/vite-plugin/plugins/inject'
./plugins主入口仍保留,向后兼容;各插件单独子路径(如./plugins/analyze/build-progress)同步开放
generateRouter(修复)
Bug 修复:exportTypes: false 时生成的路由文件类型注解与 import 语句不一致
| 字段 | 0.2.6 | 0.2.7 | 说明 |
|---|---|---|---|
typeAnnotation |
isTS ? ': RouteConfig[]' : '' |
isTS && options.exportTypes ? ': RouteConfig[]' : '' |
仅在启用类型导出时添加注解 |
// 0.2.6:exportTypes: false 时仍生成类型注解,但无 import 语句,导致 RouteConfig 未定义错误
export const routes: RouteConfig[] = [
// ❌ RouteConfig 未定义
// ...
]
// 0.2.7:exportTypes: false 时不生成类型注解,与 import 逻辑保持一致
export const routes = [
// ✅ 无类型注解,无错误
// ...
]
子路径导出(变更)
- 新增
@meng-xi/vite-plugin/plugins/analyze子路径导出 - 新增
@meng-xi/vite-plugin/plugins/compress子路径导出 - 新增
@meng-xi/vite-plugin/plugins/copy子路径导出 - 新增
@meng-xi/vite-plugin/plugins/generate子路径导出 - 新增
@meng-xi/vite-plugin/plugins/guard子路径导出 - 新增
@meng-xi/vite-plugin/plugins/inject子路径导出 - 新增
@meng-xi/vite-plugin/plugins/proxy子路径导出 - 新增各插件单独子路径导出(如
./plugins/analyze/build-progress、./plugins/compress/compress-assets等)
0.2.6(2026-06-25) 下载此版本
通用工具抽离与架构统一重构,版本号注入机制自动化
Common 工具模块(增强 + 新增)
新增 6 个子模块:将各插件内部重复的工具函数提取到 common 目录统一管理,消除冗余代码
| 子路径 | 新增导出 | 来源 |
|---|---|---|
common/code |
JS_KEYWORDS(JS 关键字集合)、stripCommentsAndStrings(移除注释与字符串) |
autoImport |
common/compress |
calculateGzipSize(gzip 压缩大小计算) |
bundleAnalyzer |
common/env |
parseEnvContent(.env 文件解析,支持前缀过滤) |
envGuard |
common/hash |
generateRandomHash(加密级随机哈希生成) |
generateVersion |
common/object |
deepMerge(深度合并对象,跳过 undefined) |
factory |
common/string |
toCamelCase、toPascalCase(大小写转换)、stripJsonComments(JSON 注释移除)、escapeRegex(正则转义) |
autoImport |
common/format(增强):
| 新增函数 | 描述 |
|---|---|
parsePluginTemplate |
插件专用模板解析函数,支持 {name}、{date}、{date:FORMAT}、{version}、{custom:KEY} 占位符,统一注释头模板处理 |
import { parsePluginTemplate } from './uni_modules/vite-plugin/js_sdk/common/format/index.mjs'
// 支持自定义日期格式和自定义字段
parsePluginTemplate('{name} {custom:author} {date:YYYY-MM-DD} {version}', {
name: 'generate-router',
version: '0.2.6',
customFields: { author: 'MengXi Studio' }
})
// 输出:'generate-router MengXi Studio 2026-06-25 0.2.6'
版本号注入机制(重构)
变更:移除手动版本同步逻辑,改为构建时自动注入
| 0.2.5 | 0.2.6 | 说明 |
|---|---|---|
generate-exports.ts 手动同步 |
unbuild replace 配置自动注入 |
版本号来源从脚本维护改为构建期注入 |
| 硬编码版本号字符串 | __PLUGIN_VERSION__ 全局变量 |
插件内部统一使用全局变量,无需手动更新 |
| 无类型声明 | src/types/global.d.ts |
新增全局类型声明,提供 TypeScript 类型支持 |
影响:generateRouter 注释头中的 {version} 占位符现在通过 __PLUGIN_VERSION__ 自动获取,版本号升级时无需修改插件源码
versionUpdateChecker(优化)
变更:自定义提示模板解析改用通用工具函数
| 0.2.5 | 0.2.6 | 说明 |
|---|---|---|
多次链式 .replace(/\{\{key\}\}/g, …) |
parseTemplateWithDelimiter |
统一使用 common/format 模板解析函数 |
| 手动拼接 5 个占位符替换 | 传入 values 对象一次解析 | 代码更简洁,支持键名自动转义 |
插件目录结构(重构)
变更:统一插件内部助手目录命名,提升代码可维护性
| 0.2.5 | 0.2.6 | 说明 |
|---|---|---|
plugins/*/common/ |
plugins/*/helpers/ |
所有插件内部 common 目录重命名为 helpers |
faviconManager/common/type.ts |
faviconManager/types.ts |
类型文件统一到插件根目录 |
此变更仅影响插件内部结构,对用户导入路径无影响
子路径导出(变更)
- 新增
@meng-xi/vite-plugin/common/code子路径导出 - 新增
@meng-xi/vite-plugin/common/compress子路径导出 - 新增
@meng-xi/vite-plugin/common/env子路径导出 - 新增
@meng-xi/vite-plugin/common/hash子路径导出 - 新增
@meng-xi/vite-plugin/common/object子路径导出 - 新增
@meng-xi/vite-plugin/common/string子路径导出 @meng-xi/vite-plugin/common/format新增导出:parsePluginTemplate@meng-xi/vite-plugin/common/code新增导出:JS_KEYWORDS、stripCommentsAndStrings@meng-xi/vite-plugin/common/compress新增导出:calculateGzipSize@meng-xi/vite-plugin/common/env新增导出:parseEnvContent@meng-xi/vite-plugin/common/hash新增导出:generateRandomHash@meng-xi/vite-plugin/common/object新增导出:deepMerge@meng-xi/vite-plugin/common/string新增导出:toCamelCase、toPascalCase、stripJsonComments、escapeRegex
平台兼容性
uni-app(3.7.12)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(3.7.12)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | √ | √ |
@meng-xi/vite-plugin
Vite 实用插件集与插件开发框架(uni-app 版本)。
📖 完整文档:https://mengxi-studio.github.io/vite-plugin/
特性
- 开箱即用 - 15 个实用插件,覆盖构建、产物、路由、版本、HTML、代理等场景
- 插件开发框架 - 导出 BasePlugin、Logger、Validator,快速构建自定义插件
- 通用工具库 - 内置 14 大 Common 工具模块,支持子路径按需导入
- uni-app 适配 - 通过 uni_modules 集成,无需 npm 安装
安装
uni_modules(推荐)
将 vite-plugin 目录复制到项目的 uni_modules 目录下:
src/
└── uni_modules/
└── vite-plugin/
└── js_sdk/
└── index.mjs
npm
pnpm add @meng-xi/vite-plugin -D
npm 方式需将导入路径改为
@meng-xi/vite-plugin。
快速开始
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import {
assetManifest,
autoImport,
buildProgress,
compressAssets,
copyFile,
envGuard,
faviconManager,
generateRouter,
generateVersion,
htmlInject,
imageOptimizer,
loadingManager,
proxyManager,
versionUpdateChecker
} from './uni_modules/vite-plugin/js_sdk/index.mjs'
export default defineConfig({
plugins: [
uni(),
// 按需启用插件
autoImport({ imports: { vue: ['*'] }, vueTemplate: true }),
generateRouter({ dts: true }),
generateVersion({ format: 'datetime', outputType: 'both' }),
envGuard({ required: { VITE_API_URL: { type: 'url', required: true } } }),
loadingManager({ defaultVisible: true, autoHideOn: 'DOMContentLoaded' }),
proxyManager({ rules: [{ context: '/api', target: 'https://api.example.com', changeOrigin: true }] })
]
})
内置插件
| 插件 | 说明 |
|---|---|
| assetManifest | 资源清单生成 |
| autoImport | 自动导入 |
| buildProgress | 终端构建进度条 |
| bundleAnalyzer | 构建产物体积分析 |
| compressAssets | 构建产物压缩(gzip/brotli) |
| copyFile | 文件复制 |
| envGuard | 环境变量校验 |
| faviconManager | 网站图标管理 |
| generateRouter | 路由配置生成(uni-app) |
| generateVersion | 版本号生成与注入 |
| htmlInject | HTML 内容注入 |
| imageOptimizer | 图片优化与格式转换 |
| loadingManager | 全局 Loading 状态管理 |
| proxyManager | 开发服务器代理管理 |
| versionUpdateChecker | 运行时版本更新检查 |
各插件详细配置与 API 请查阅 官网插件文档。
插件开发框架
导出完整的插件开发框架,帮助快速构建符合规范的自定义 Vite 插件。
import { BasePlugin, createPluginFactory } from './uni_modules/vite-plugin/js_sdk/index.mjs'
import type { Plugin } from 'vite'
class MyPlugin extends BasePlugin<{ prefix?: string }> {
protected getPluginName() {
return 'my-plugin'
}
protected getDefaultOptions() {
return { prefix: '[app]' }
}
protected validateOptions() {
this.validator.field('prefix').string().notEmpty().validate()
}
protected addPluginHooks(plugin: Plugin) {
plugin.writeBundle = {
order: 'post',
handler: async () => {
await this.safeExecute(async () => {
this.logger.info('插件执行中...')
}, '执行自定义逻辑')
}
}
}
}
export const myPlugin = createPluginFactory(MyPlugin)
核心 API: BasePlugin(插件基类)、createPluginFactory(转换为 Vite 插件函数)、Logger(日志管理器)、Validator(链式配置验证器)。
详细 API 请查阅 官网框架文档。
Common 工具模块
内置通用工具函数库,按功能模块组织,支持子路径按需导入。
// 示例:按需导入
import { formatFileSize } from './uni_modules/vite-plugin/js_sdk/common/format/index.mjs'
import { scanDirectory } from './uni_modules/vite-plugin/js_sdk/common/fs/index.mjs'
import { deepMerge } from './uni_modules/vite-plugin/js_sdk/common/object/index.mjs'
import { normalizePath } from './uni_modules/vite-plugin/js_sdk/common/path/index.mjs'
| 子路径 | 描述 |
|---|---|
common/code |
JS 关键字、注释与字符串移除 |
common/compress |
gzip 压缩大小计算 |
common/concurrency |
并发限制批量异步执行 |
common/env |
.env 文件解析 |
common/format |
日期、模板、文件大小格式化 |
common/fs |
文件检查、复制、扫描、写入 |
common/hash |
随机哈希生成 |
common/html |
HTML 注入、消毒、属性转义 |
common/object |
深度合并对象 |
common/path |
路径规范化、扩展名过滤 |
common/script |
回调函数体安全包装 |
common/string |
大小写转换、JSON 注释移除 |
common/ui |
终端 ANSI 颜色码 |
common/validation |
链式验证器、全局名称校验 |
各工具函数详细 API 请查阅 官网工具文档。
子路径导出
| 子路径 | 描述 |
|---|---|
./js_sdk/index.mjs |
主入口(全部导出) |
./js_sdk/plugins/index.mjs |
所有插件 |
./js_sdk/factory/index.mjs |
插件开发框架 |
./js_sdk/logger/index.mjs |
日志管理器 |
./js_sdk/common/index.mjs |
所有工具函数 |
./js_sdk/common/<module>/index.mjs |
各工具子模块 |
./js_sdk/plugins/<name>/index.mjs |
各插件子模块 |

收藏人数:
https://github.com/MengXi-Studio/vite-plugin
https://www.npmjs.com/package/@meng-xi/vite-plugin
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 65
赞赏 0
下载 12448000
赞赏 1935
赞赏
京公网安备:11010802035340号