更新记录

0.0.5(2026-03-05) 下载此版本

generateVersion 支持在构建过程中自动生成版本号,支持多种格式和输出方式

generateRouter

根据 uni-app 项目的 pages.json 自动生成路由配置文件。

选项 类型 默认值 描述
pagesJsonPath string 'src/pages.json' pages.json 文件路径
outputPath string 'src/router.config.ts' 输出文件路径
outputFormat 'ts' | 'js' 'ts' 输出文件格式
nameStrategy string 'camelCase' 路由名称策略
includeSubPackages boolean true 是否包含子包路由
watch boolean true 是否监听变化自动重新生成
metaMapping object - 页面 style 字段到 meta 的映射
preserveRouteChanges boolean true 是否保留用户对 routes 的修改

0.0.4(2026-02-28) 下载此版本

添加 generateVersion 插件及 format 工具导出

  • 在 core 包的 common 模块中导出 format 工具
  • 在 plugins 模块中添加并导出 generateVersion 插件

优化文件复制和对象合并逻辑,改进图标注入插件

  • 重构 readDirRecursive 接口,返回文件/目录条目信息,减少冗余 stat 调用
  • 引入并发限制机制,实现并行文件复制,提高 IO 效率
  • 优化 copySourceToTarget 函数,支持并行复制及增量更新逻辑
  • 深度合并函数 deepMerge 支持跳过 undefined,完善嵌套对象合并规则
  • Logger 增加日志图标和颜色,提升控制台输出可读性
  • injectIco 插件改用 Vite 官方 HtmlTagDescriptor 接口注入图标标签,增加自定义 link 标签的注入处理
  • injectIco 插件 transformIndexHtml 钩子支持同时兼容字符串替换和官方标签注入两种方式

0.0.3(2026-02-04) 下载此版本

  • 插件工厂新增safeExecuteSync同步函数]
  • 将日志系统从简单工具类升级为功能完善的单例模式框架
  • 新增 PluginLogger 接口,实现插件级别独立日志代理与控制
  • 统一日志输出格式,包含时间戳、命名空间、图标与颜色支持
  • 通过插件配置映射管理插件日志开关,实现灵活的日志启用控制
  • 优化 BasePlugin 中日志初始化流程,调用 createPluginLogger 注入日志代理
  • 更新日志级别支持 success/info/warn/error 四种类型
  • 改进日志系统性能及扩展性,支持附加数据和调试友好输出
  • 完善日志故障排查指南及生产环境性能建议
  • Validator 类升级为泛型设计,支持编译时类型安全保障
  • BasePlugin 泛型化,集成泛型 Validator 实现类型安全的配置验证
  • 增加泛型参数约束 T 和 K,确保字段与默认值类型匹配
  • Validator 的 fluent API 支持链式类型推断,增强类型推导连续性
  • 自定义验证函数和默认值方法支持类型安全参数
  • 更新架构图及 API 文档反映泛型验证机制
  • 提供示例及最佳实践,指导类型安全配置开发和错误定位
  • 保持与工厂及插件体系兼容,实现泛型验证全链路支持
查看更多

平台兼容性

uni-app(3.6.17)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
-

uni-app x(3.6.17)

Chrome Safari Android iOS 鸿蒙 微信小程序

其他

多语言 暗黑模式 宽屏模式

@meng-xi/vite-plugin license npm npm

简介

@meng-xi/vite-plugin 是一个为 Vite 提供实用插件的工具包,同时也是一个完整的插件开发框架。

特性

  • 开箱即用 - 提供文件复制、路由生成、版本管理、图标注入等实用插件
  • 插件开发框架 - 导出 BasePlugin、Logger、Validator 等核心组件,快速构建自定义插件
  • 类型安全 - 完整的 TypeScript 类型定义,配置验证器确保参数正确性
  • 灵活配置 - 所有插件支持详细配置,满足多样化场景需求

文档

查看完整文档:https://mengxi-studio.github.io/vite-plugin/

安装

# npm
npm install @meng-xi/vite-plugin -D

# yarn
yarn add @meng-xi/vite-plugin -D

# pnpm
pnpm add @meng-xi/vite-plugin -D

快速开始

使用内置插件

import { defineConfig } from 'vite'
import { copyFile, generateRouter, generateVersion, injectIco } from '@meng-xi/vite-plugin'

export default defineConfig({
    plugins: [
        // 复制文件
        copyFile({
            sourceDir: 'src/assets',
            targetDir: 'dist/assets'
        }),

        // 生成路由配置(uni-app)
        generateRouter({
            pagesJsonPath: 'src/pages.json',
            outputPath: 'src/router.config.ts'
        }),

        // 生成版本号
        generateVersion({
            format: 'datetime',
            outputType: 'both'
        }),

        // 注入网站图标
        injectIco({
            base: '/assets'
        })
    ]
})

开发自定义插件

import { BasePlugin, createPluginFactory } from '@meng-xi/vite-plugin'
import type { Plugin } from 'vite'

interface MyPluginOptions {
    path: string
    enabled?: boolean
    verbose?: boolean
    errorStrategy?: 'throw' | 'log' | 'ignore'
}

class MyPlugin extends BasePlugin<MyPluginOptions> {
    protected getDefaultOptions() {
        return { path: './default' }
    }

    protected validateOptions(): void {
        this.validator.field('path').required().string().validate()
    }

    protected getPluginName(): string {
        return 'my-plugin'
    }

    protected addPluginHooks(plugin: Plugin): void {
        plugin.buildStart = () => {
            this.logger.info(`Plugin started with path: ${this.options.path}`)
        }
    }
}

export const myPlugin = createPluginFactory(MyPlugin)

内置插件

copyFile

在 Vite 构建完成后复制文件或目录到指定位置。

选项 类型 默认值 描述
sourceDir string - 源目录路径(必填)
targetDir string - 目标目录路径(必填)
overwrite boolean true 是否覆盖现有文件
recursive boolean true 是否递归复制子目录
incremental boolean true 是否启用增量复制

generateRouter

根据 uni-app 项目的 pages.json 自动生成路由配置文件。

选项 类型 默认值 描述
pagesJsonPath string 'src/pages.json' pages.json 文件路径
outputPath string 'src/router.config.ts' 输出文件路径
outputFormat 'ts' | 'js' 'ts' 输出文件格式
nameStrategy string 'camelCase' 路由名称策略
includeSubPackages boolean true 是否包含子包路由
watch boolean true 是否监听变化自动重新生成
metaMapping object - 页面 style 字段到 meta 的映射
preserveRouteChanges boolean true 是否保留用户对 routes 的修改

generateVersion

在 Vite 构建过程中自动生成版本号。

选项 类型 默认值 描述
format string 'timestamp' 版本格式
outputType string 'file' 输出类型
outputFile string 'version.json' 输出文件路径
defineName string '__APPVERSION_\' 注入的全局变量名
prefix string - 版本号前缀
suffix string - 版本号后缀

injectIco

在 Vite 构建过程中将网站图标链接注入到 HTML 文件的 head 中。

选项 类型 默认值 描述
base string - 图标文件的基础路径
url string - 图标的完整 URL
link string - 自定义完整的 link 标签 HTML
icons array - 自定义图标数组
copyOptions object - 图标文件复制配置

更新日志

查看 GitHub Releases

贡献指南

欢迎贡献代码!请按以下步骤操作:

  1. Fork 本项目
  2. 创建功能分支:git checkout -b feature/your-feature
  3. 提交变更:git commit -m "feat: your feature description"
  4. 推送分支:git push origin feature/your-feature
  5. 创建 Pull Request

License

MIT

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议