更新日志
[1.4.1] - 2026-09-16
修复 generatePages / generateUni 对自定义页面扩展名(如 .uvue)的处理,uni-app x 项目可正常使用 .uvue 页面
修复
- pages.json 路径残留扩展名:页面路径剥离逻辑此前写死仅匹配
.vue/.nvue,当includeExtensions配置.uvue等自定义扩展名时会生成pages/home/index.uvue这类错误路径,导致页面无法识别。现改为按文件实际扩展名动态剥离——命中includeExtensions列表(忽略大小写、容忍前导点)才剥离,未配置时保持原.vue/.nvue行为 defineUniPage宏在.uvue页面未剥离:SFC script 虚拟模块识别由id.includes('.vue')改为/\.(vue|uvue|nvue)(\?|$)/,兼容.uvue/.nvue,避免宏调用残留在构建产物中导致运行时ReferenceError。generatePages / generateUni 两处同步修正
[1.4.0] - 2026-08-28
新增 defineUniPage 宏与页面生成架构重构:扫描页面 → pages.json → 路由配置一条流水线,配套公共 DirectoryWatcher / TaskQueue 统一监听与串行生成,插件总数增至 17 个
新增
defineUniPage宏:在<script setup>(或<script>顶层)中调用,功能与<route-config>自定义块一致,写法更贴近 JS/TS- 同一页面同时声明宏与
<route-config>时,以宏为准(顶层字段按宏覆盖) - 参数为 JS 对象字面量,支持注释、单引号、尾随逗号与嵌套对象(
tab/style/meta) - 运行时无痕:扫描时被消费,构建时自动移除调用,无需 import
- 自动生成全局类型声明
src/define-uni-page.d.ts(dts可自定义路径或false关闭),Vue (Official) / Volar / tsc 开箱识别
- 同一页面同时声明宏与
<route-config>自定义块:解析支持 JSONC 尾随逗号(与lang="jsonc"的 IDE 高亮语义一致)- 公共模块:
DirectoryWatcher(common/fs,目录递归监听,统一管理多目录,平台不支持recursive时降级跳过并告警)、TaskQueue(common/concurrency,串行任务队列,单个任务失败不阻塞后续) - factory:新增
FunctionHookMap类型(钩子名泛型约束收紧为仅函数型钩子)、可重写的getBaseDefaults()方法
增强
- generatePages / generateUni 重构:抽取公共
producePages()流水线(扫描页面 +<route-config>/defineUniPage→ 组装 → 合并,内存产出不写盘);generateUni 内存直传阶段二,消除「先写盘再读盘」往返 - 监听与串行化统一:generatePages / generateUni / generateRouter 三者统一使用 TaskQueue 串行生成、DirectoryWatcher 管理页面目录监听,避免高频变更时的并发读改写竞态
修复
- generatePages / generateUni 的
<route-config>虚拟模块请求匹配由id.includes('vue')收紧为id.includes('?vue'),避免误拦截
[1.3.0] - 2026-08-26
新增 generateUni 组合入口插件,一条流水线完成「扫描页面 → pages.json → 路由配置」,插件总数增至 17 个
新增
generateUni插件:将generatePages与generateRouter编排为一条流水线,等价于两插件连用(原有两个插件保持不变,仍可独立使用)- 阶段一扫描页面 +
<route-config>产出内存 pages 数据并写盘 pages.json,阶段二直接消费内存数据生成路由配置(+ 可选 dts),避免读盘往返 - 配置分组:顶层公共项(
pagesJsonPath/watch)+pages子对象(generatePages 参数)+router子对象(generateRouter 参数),避免 20+ 平铺选项 - 监听页面目录变更时串行重跑「阶段一 + 阶段二」,避免并发读写竞态
- 拦截
<route-config>虚拟模块请求为空模块,避免构建时被当作 JavaScript 解析报错 - 完整继承 generatePages 的 tabBar 归集 / 分包 / 合并策略与 generateRouter 的 preserveRouteChanges / metaMapping / dts 等
- 阶段一扫描页面 +
- 子路径导出:
plugins/generate/generate-uni导出generateUni及类型GenerateUniOptions;plugins/generate聚合导出
增强
- generatePages:为 standalone 模式补充
<route-config>虚拟模块拦截(对齐 generateUni),避免生产构建把块内容当作 JavaScript 解析报错 - proxyManager:
config钩子新增env.command === 'build'拦截,构建时完全跳过代理规则加载与配置生成(代理仅对开发服务器有效,此前打包会白白加载规则并输出误导性日志)
[1.2.0] - 2026-08-25
新增 generatePages 插件,扫描 Vue 文件 + <route-config> 自定义块动态生成 pages.json,插件总数增至 16 个
新增
generatePages插件:扫描页面目录与<route-config>自定义块,自动生成 / 更新 pages.json(pages/subPackages/tabBar)- 主包页面递归扫描生成,路径稳定排序;分包经
subPackages: [{ root, dir }]自动扫描 entryPage固定pages[0]为启动页,不被字母序排序改写- tab 页面经
<route-config>声明isTab+tabBar模板自动归集,按tab.order升序排序 - 合并策略仅覆盖页面部分,保留
globalStyle/condition等 watch: true(默认)页面目录变化时自动重新生成- 选项:
pagesJsonPath/pagesDir/subPackages/routeConfigBlock/titleFallback/tabBar/includeExtensions/excludePatterns/watch
- 主包页面递归扫描生成,路径稳定排序;分包经
<route-config>自定义块:页面内就近声明title(映射navigationBarTitleText)/name/style/meta/isTab/tab- 子路径导出:
plugins/generate/generate-pages导出generatePages及类型(GeneratePagesOptions/RouteConfigBlock/SubPackageConfig/TabBarTemplate/TabBarItemOverride/ScannedPage);plugins/generate聚合导出
增强
- 类型完善:
TabBarItemOverride复用为overrides元素类型,与页面内tab保持一致;页面排序orderMainPages移入helpers目录
[1.1.0] - 2026-07-28
autoImport 全面重构,内置预设系统、多种导入形式、HMR、Lint 配置生成、缓存机制
变更(破坏性)
- 移除类型
ImportMapping/ResolvedImport,改用InlineImportConfig/ImportInline - 移除
AutoImportOptions.fileFilter,改用include/exclude或dirsScanOptions.fileFilter - 移除
helpers/compat.ts兼容模块(旧格式不再支持) - 移除函数:
migrateLegacyOptions/resolvedImportToInline/inlineToResolvedImport/importMappingToInlines
新增
- 内置预设系统:
imports: ['vue', 'vue-router', 'pinia', 'vue-i18n']一键启用常用库 - 多种导入形式:别名导入、类型导入(
type: true生成import type)、命名空间导入('*')、export assignment 导入('=') - 目录扫描增强:
dirs支持DirConfigObject、glob 模式与类型标记 - DTS 模式:
dtsMode: 'append' | 'overwrite'(append 仅追加新类型)、dtsPreserveExts保留文件扩展名 - Vue 指令自动导入:
vueDirectives自动识别自定义指令 - Lint globals 生成:
eslintrc/biomelintrc生成 globals 配置,解决no-undef报错 - 缓存机制:
cache缓存预设解析与文件扫描结果,提升构建性能 - HMR 热更新:扫描目录文件变更时自动重新初始化
- 注释禁用:
// @unimport-disable文件级或行级禁用自动导入 - 自定义 Resolver:
resolvers对未命中标识符自定义解析逻辑 - 包预设:
packagePresets从已安装包的.d.ts自动发现导出 - Vite optimizeDeps 集成:
viteOptimizeDeps自动将依赖加入 Vite 预优化列表 - DTS 忽略过滤:
ignoreDts排除指定标识符 - 新导出函数:
resolveImportsConfig/buildNameLookup/findPreset/expandPreset/resolvePackagePreset/generateEslintrc/generateBiomelintrc
增强
- Resolver 回退始终对未命中标识符尝试;DTS 生成去重(
initialize()与buildEnd间避免冗余写入);resolveImportsConfig统一解析预设字符串、Record、Inline 等格式;通配符导出优先从.d.ts解析(最准确),回退运行时入口
[1.0.0] - 2026-06-27
首个稳定版本发布,API 稳定性承诺与生产就绪标志
新增
- 经 0.x 系列(0.0.1 - 0.2.7)共 27 个版本迭代,插件从 2 个发展到 15 个(7 个分组),覆盖构建全生命周期;common 工具收敛为 14 个规范化子模块;插件开发框架(BasePlugin / Logger / Validator / createPluginFactory)成熟
- API 稳定承诺:后续严格遵循语义化版本规范,破坏性变更需升主版本号
- 子路径导出稳定:主入口向后兼容 + 7 个分组 + 15 个单插件子路径 + 14 个 common 子模块 + factory / logger
- 生产就绪:支持 Vite 5.x - 7.x(
peerDependencies: vite >=5.0.0 <8.0.0)、ESM(.mjs)与 CJS(.cjs)双格式输出、完整 TypeScript 类型、sharp/svgo可选依赖优雅降级、所有插件零配置可用
[0.2.7] - 2026-06-26
插件按功能分组导出,修复 generateRouter 类型注解生成缺陷
新增
- 插件分组导出:15 个插件按功能划分为 7 个分组(analyze / compress / copy / generate / guard / inject / proxy),每个分组提供独立子路径导出(如
./plugins/compress),支持按需导入与 Tree-shaking;./plugins主入口向后兼容,各插件单独子路径同步开放
修复
- generateRouter 在
exportTypes: false时仍生成: RouteConfig[]类型注解但无 import 语句,导致 RouteConfig 未定义 —— 仅在启用类型导出时添加注解
[0.2.6] - 2026-06-25
通用工具抽离与架构统一重构,版本号注入机制自动化
新增
- common 新增 6 个子模块:
code(JS_KEYWORDS/stripCommentsAndStrings)、compress(calculateGzipSize)、env(parseEnvContent)、hash(generateRandomHash)、object(deepMerge)、string(toCamelCase/toPascalCase/stripJsonComments/escapeRegex) - common/format:新增
parsePluginTemplate,支持{name}/{date}/{date:FORMAT}/{version}/{custom:KEY}占位符,统一注释头模板处理
重构
- 版本号注入机制:移除手动版本同步逻辑,改为构建时 unbuild
replace配置自动注入__PLUGIN_VERSION__全局变量,新增src/types/global.d.ts类型声明;generateRouter 注释头{version}占位符无需再手动更新源码 - 插件目录结构:各插件
common/目录统一重命名为helpers/,类型文件统一到插件根目录(仅影响内部结构,对用户导入路径无影响)
优化
- versionUpdateChecker 自定义提示模板解析改用通用函数
parseTemplateWithDelimiter,替代多次链式.replace()手动拼接
[0.2.5] - 2026-06-24
generateRouter 注释头模板化升级,移除废弃函数
变更(破坏性)
fileHeader参数移除,替换为headerTemplate:从boolean开关升级为boolean | string模板,字符串内容由占位符自由组合
新增
- 注释头模板系统:
headerTemplate支持{name}/{date}(默认YYYY-MM-DD HH:mm:ss)/{date:格式}/{version}/{custom:键名}占位符,顺序由模板位置决定 - 自定义字段
customFields:Record<string, string>,供{custom:键名}占位符引用 - 变更:
plugins/generate-router移除选项fileHeader,新增headerTemplate/customFields
移除
- common/code-manipulation 移除废弃函数
serializeValueCompact(请使用serializeValue(value, true)替代)
[0.2.4] - 2026-06-23
generateRouter 新增页面名称配置,优化路由合并策略
新增
- 页面名称
name字段:UniAppPageConfig新增name属性,可在 pages.json 中直接配置路由名称,优先级高于nameStrategy自动生成
优化
preserveRouteChanges合并策略:pages.json 是自动生成字段的唯一来源,name与meta中来自 pages.json 的字段始终使用新值,仅保留用户自定义的额外字段
[0.2.3] - 2026-06-23
完善插件基类与路由生成插件功能
新增
- 页面元信息
meta字段:UniAppPageConfig新增meta属性,优先级高于metaMapping映射;提取优先级为pageConfig.meta>metaMapping映射 > tabBar 推断
重构
- BasePlugin:
addPluginHooks从抽象方法改为虚方法(默认空实现),不依赖 Vite 钩子的插件无需再写空的实现 - generateRouter:路由生成逻辑从
configResolved钩子迁移至基类onConfigResolved生命周期,统一生命周期管理
[0.2.2] - 2026-06-21
generateRouter 修复多行格式输出属性间逗号缺失与缩进错误
修复
- 多行格式路由对象属性之间缺少逗号分隔符,导致生成的
router.config.ts语法错误 - 多行格式非首行属性缩进多了一个 tab,导致格式不统一
[0.2.1] - 2026-06-21
generateRouter 新增文件注释头、输出格式优化,修复 preserveRouteChanges 合并丢失,移除冗余类型定义
新增
- 文件注释头
fileHeader:开启后在生成文件顶部添加含@plugin/@date(含时分秒)/@version的标准化注释头,版本号随 npm 包版本自动更新 - 多行格式输出:路由对象从单行紧凑格式改为每属性独占一行的多行格式,提升可读性
- 类型外部导入:移除内联类型定义,改为
import type { RouteConfig } from '@meng-xi/uni-router',类型由 uni-router 统一提供
修复
preserveRouteChanges下meta整体替换导致用户自定义字段丢失 —— 改为逐字段合并,仅更新 / 添加新字段- 单条路由含
beforeEnter等函数属性导致 JSON.parse 失败时全部路由合并跳过 —— 仅跳过该条,其余正常合并
变更(破坏性)
- 移除
UniAnimationType、NavigationAnimation类型导出及RouteMeta.animation字段,改由@meng-xi/uni-router提供(如需使用请从 uni-router 导入替代)
[0.2.0] - 2026-06-18
新增 proxyManager 开发代理管理插件,Common 工具模块提取多项通用函数,修复 proxyManager 四个关键缺陷
新增
proxyManager插件:开发服务器代理管理,在configureServer启动时注册代理中间件- 路径匹配:字符串前缀与正则两种方式
- 请求重写(
rewrite)、响应修改(modifyResponse) - 延迟模拟:固定毫秒数与随机范围(
{ min, max })两种配置 envPrefix从process.env读取代理目标,一套代码多环境切换- 规则文件:
.proxyrc.ts/.proxyrc.js/.proxyrc.mjs,兼容 ESM 与 CJS - 三级请求日志(
none/basic/verbose)、WebSocket 代理(ws: true)、env字段限定生效环境 - 选项:
rules/configFile/logLevel/defaultDelay/envPrefix
- common/format:新增
parseTemplateWithDelimiter(自定义左右分隔符,键名与值中的正则特殊字符自动转义) - common/fs:新增
scanAndMapFiles(封装「扫描 + 过滤 + 映射」)、deleteFiles(批量删除,失败静默忽略)
[0.1.9] - 2026-06-14
generateRouter 新增导航动画支持与路由属性保留增强
新增
- 导航动画类型:新增
UniAnimationType(18 种动画值)与NavigationAnimation(type+duration) - 路由元信息:
RouteMeta新增animation字段,可配置页面默认导航动画(仅 App 端生效) - 路由配置扩展:
RouteConfig新增索引签名[key: string]: unknown,支持用户添加beforeEnter、component等自定义属性
增强
preserveRouteChanges:基于原始文本的合并策略,完整保留用户添加的函数属性与自定义属性;path始终以 pages.json 为准,name/meta用户修改优先保留、pages.json 新增字段自动补充
[0.1.8] - 2026-06-11
新增 imageOptimizer 图片优化插件,新增 common/concurrency 并发控制模块,恢复 common/path 路径工具模块
新增
imageOptimizer插件:构建完成后(writeBundle,enforce: 'post')扫描输出目录并对图片压缩优化- 多格式压缩:JPEG(mozjpeg)/ PNG(palette)/ WebP / AVIF / GIF / TIFF / SVG(svgo)
- 格式转换:
convertToWebp/convertToAvif简写与convertMapping自定义映射 - 并发处理(
parallelLimit)、流式内存控制、原子写入、体积守恒(仅更小时替换)、sharp/svgo 优雅降级 - JSON 压缩报告(按格式分组 + Top 5 压缩率),实例方法
getStats()/getSummary()
- common/concurrency:新增
runWithConcurrency(工作池模式并发执行,结果顺序与输入对应) - common/path 恢复:
normalizePath/isExtensionIncluded/isPathExcluded/isPreCompressed - common/format:新增
calcRatio - common/fs:新增
resolveReportPath
[0.1.7] - 2026-06-08
新增 assetManifest 资源清单生成插件
新增
assetManifest插件:构建完成后(writeBundle,enforce: 'post')扫描输出目录生成资源映射清单- 三种输出格式:
vite/webpack/custom(自定义格式化器) - 按入口分组(
groupByEntry)、运行时注入(injectRuntime,以全局变量注入到</head>前) - 文件过滤(
includeExtensions/excludeExtensions/excludePaths)、publicPath前缀适配 CDN、路径冲突检测告警 - 实例方法:
getAssetMap()/getManifest()/getGroups()
- 三种输出格式:
[0.1.6] - 2026-06-07
autoImport 支持通配符自动导入,generateRouter 新增路由类型声明生成,Common 工具模块新增多项通用函数,插件代码规范化重构
新增
- autoImport 通配符导入:
imports支持'*'自动导入模块所有命名导出,优先从.d.ts提取(最准确),回退运行时入口解析 - Vue SFC 注入:新增
injectIntoScriptSetup,将 import 注入<script setup>,解决enforce: 'pre'时与 Vue SFC 编译器的协同问题 - generateRouter 路由类型声明:新增
dts选项(false/true默认src/router.d.ts/ 自定义路径),生成含 TSDoc 注释的类型声明,扩展@meng-xi/uni-router的RouteNameMap接口,实现类型安全的路由导航 - common/format:
parseTemplate(占位符,$ 安全处理)、formatDate - common/fs:
writeFileSyncSafely(同步写入自动建目录)、shouldUpdateFileContent(减少文件 IO) - common/html:
escapeHtmlAttr(防止属性注入攻击)
修复
transform钩子enforce: 'post'导致裸模块标识符无法解析,改回enforce: 'pre'- 默认
fileFilter未排除node_modules,导致库文件被错误处理并注入错误 import vue: ['*']走了运行时入口(仅含export { compile }),只解析出compile一个导出makeCallback返回的匿名函数作函数声明调用时语法错误,改用 IIFE 形式moduleMap循环中未使用变量
重构
- 各插件将非核心逻辑函数 / 常量提取到
common/子目录并聚合导出(buildProgress / generateRouter / envGuard / faviconManager / htmlInject / loadingManager / versionUpdateChecker)
[0.1.5] - 2026-06-06
新增 autoImport 自动导入插件,精简 Common 工具模块(移除 compress、object、path),修复 dts 类型声明文件在开发模式下不生成的问题
新增
autoImport插件:自动检测代码中使用的标识符并注入 import 语句(enforce: 'post')- 预设映射(
imports,支持Record<string, string[]>与ImportMapping[])、目录扫描(dirs,递归扫描跳过 node_modules)、Vue 模板支持(vueTemplate) - 类型声明生成(
dts,默认auto-imports.d.ts)、标识符忽略(ignore)、文件过滤(fileFilter)、注入位置(injectAtPosition:'top'/'after-last-import')
- 预设映射(
变更(破坏性)
- 移除使用次数不足 2 次的工具模块:
common/compress(calculateGzipSize内联至 bundleAnalyzer)、common/object(deepMerge内联至 loadingManager)、common/path(isNodeModule内联至 bundleAnalyzer),并移除仅使用一次的函数及类型 - 保留 6 个核心模块:
format/fs/html/script/ui/validation
[0.1.4] - 2026-06-03
新增 envGuard 环境变量校验插件,新增 @common/ui 终端 UI 工具模块
新增
envGuard插件:构建前校验环境变量(enforce: 'post',运行时守卫注入)- 8 种值类型校验(
string/number/url/boolean/enum/json/semver/path)、范围(minValue/maxValue)与长度(minLength/maxLength)约束、正则匹配(pattern)、自定义校验函数(validator) failAction三模式(error/warn/ignore)、.env 模板生成(generateTemplate)、运行时守卫(console/throw/overlay)、autoLoadEnv自动加载、JSON 校验报告与终端摘要
- 8 种值类型校验(
- @common/ui 模块:
ANSI(光标控制与彩色文本)、SPINNER_FRAMES(Spinner 动画帧)、stripAnsi
增强
- @common/validation:新增
EnvType、EnvFieldRule、EnvValidationResult、STRING_LIKE_TYPES类型及validateType/validateRange/validateLength/validateValue/validateEnvironment函数
[0.1.3] - 2026-06-01
新增 bundleAnalyzer 构建产物体积分析插件,新增 @common/compress 和 @common/path 工具模块
新增
bundleAnalyzer插件:构建完成后(writeBundle,enforce: 'post')分析构建产物体积json/html/both报告、gzip 体积计算(level 9)、阈值告警(sizeThreshold,超 2 倍标记 critical)- 与历史报告对比(体积变化趋势)、treemap / sunburst / list 图表视图、Top N 模块排行、文件类型分布、
openAnalyzer自动打开
- @common/compress:
calculateGzipSize(gzip 压缩后大小,level 9) - @common/path:
isNodeModule(检测 node_modules /\0/virtual:前缀)
增强
- @common/format:
escapeHtmlAttr(XSS 转义)、formatFileSize(人类可读大小)、getExtension - @common/fs:
scanDirectory(递归扫描 + 过滤)、writeJsonReport、ScannedFile/ScanDirectoryOptions类型
[0.1.2] - 2026-05-31
新增 compressAssets 构建产物压缩插件,所有插件参数可选化,新增 @common/object 和 @common/fs 完整工具函数
新增
compressAssets插件:构建完成后(writeBundle,enforce: 'post')用 gzip / brotli / both 压缩产物,生成.gz/.br文件- 文件过滤(
includeExtensions/excludeExtensions/excludePaths)、压缩阈值(threshold)、并发压缩(parallelLimit) deleteOriginalFile删除原始文件、JSON 压缩报告(reportOutput)、Top 5 压缩率日志、路径跨平台兼容
- 文件过滤(
- @common/object:新增
deepMerge(跳过 undefined,递归合并,数组覆盖)
增强
- 所有插件参数可选化:存在默认值的参数均改为选填(添加
?),零配置即可使用(BuildProgressOptions / CompressAssetsOptions / CopyFileOptions / FaviconManagerOptions / GenerateRouterOptions / GenerateVersionOptions / VersionUpdateCheckerOptions / HtmlInjectOptions / LoadingManagerOptions) - @common/fs:
checkSourceExists/ensureTargetDir/fileExists/copySourceToTarget(递归 / 覆盖 / 增量 / 并发)/writeFileContent/readFileContent及CopyOptions/CopyResult类型 - @common/format:
generateRandomHash/formatDate/parseTemplate/toCamelCase/toPascalCase/stripJsonComments/DateFormatOptions - BasePlugin:
mergeOptions改用deepMerge;新增validator属性、getEnforce()方法、onConfigResolved(config)生命周期、handleError(error, context);toPlugin自动注册configResolved与closeBundle
[0.1.1] - 2026-05-30
新增 htmlInject HTML 内容注入插件,新增通用工具函数和类型,Validator 新增枚举和数值范围验证
新增
htmlInject插件:按规则将自定义 HTML 注入到目标 HTML 文件(transformIndexHtml,order: 'post')- 7 种注入位置(
head-start/head-end/body-start/body-end/before-selector/after-selector/replace-selector) - 条件注入(
env/file-contains/custom,支持negate)、选择器匹配(string/regex) - 模板变量替换(
,规则级优先于全局)、priority规则优先级 - 安全过滤(阻止危险标签 / 事件属性,
allowedTags白名单)、allowScriptInjection跳过检查并告警、logInjection注入日志
- 7 种注入位置(
- 通用工具函数:
- format:
escapeHtmlAttr/padNumber/getDateFormatParams(新增{SSS}毫秒占位符) - html:
injectBeforeTagWithFallback(带回退策略)、injectHeadAndBody(双区域注入) - validation(新增独立模块):
validateGlobalName/validateNoScriptInTemplate/validateCallbackFields/validateNonNegativeNumber/validateNestedDuration/validateEnumValue
- format:
增强
- Validator:新增
enum(allowedValues)/minValue(min)/maxValue(max)链式方法
[0.1.0] - 2026-05-24
新增 versionUpdateChecker 版本更新检查插件,插件重命名(injectIco → faviconManager,injectLoading → loadingManager),新增通用工具模块
新增
versionUpdateChecker插件:定期检查版本号变更并向用户显示刷新提示,通常与generateVersion配合使用- 三种版本来源(
define全局变量 /file(version.json)/auto自动检测)、三种提示 UI(modal/banner/toast) customPromptTemplate自定义模板(等占位符)、customStyle自定义样式、checkOnVisibilityChange切回立即检查、生命周期回调(onUpdateAvailable/onRefresh/onDismiss)- XSS 防护(禁止 script 标签)、标识符安全(
defineName防原型污染)、SSR 安全、销毁清理
- 三种版本来源(
- 通用工具模块:html(
injectBeforeTag/injectHtmlByPriority/HtmlInjectResult)、script(makeCallback/containsScriptTag/validateIdentifierName)
变更(破坏性)
- 插件重命名:
injectIco→faviconManager、injectLoading→loadingManager(功能不变,名称更准确)
增强
- faviconManager:新增字符串简写配置(
faviconManager('/assets'));url选项描述明确覆盖base + favicon.ico - loadingManager:新增运行时 API
toggle(text?)/enablePointerEvents()/disablePointerEvents()/togglePointerEvents()/isPointerEventsEnabled()
[0.0.9] - 2026-05-23
修复 injectLoading 严重问题,新增 LoadingManager 运行时 API,优化插件开发框架
修复
- injectLoading 的
style.pointerEvents默认值错误(此前默认false导致遮罩层无法阻止用户操作),正确默认true拦截交互 - LoadingManager 运行时 API 不完整,补充缺失方法
新增
- LoadingManager 运行时 API:
toggle(text?)/enablePointerEvents()/disablePointerEvents()/togglePointerEvents()/isPointerEventsEnabled() - 通用工具函数:
readDirRecursive(返回条目信息,避免冗余 stat)、runWithConcurrency(并发限制批量执行)、shouldUpdateFile(增量复制判断) - TypeScript 类型导出:
PluginFactory/OptionsNormalizer/DateFormatOptions
增强
- injectIco:新增字符串简写配置(
injectIco('/assets')) - BasePlugin:新增
safeExecute/safeExecuteSync安全执行方法(按errorStrategy处理错误);构造函数自动包裹validateOptions(),验证失败不再导致构建崩溃 - createPluginFactory:新增选项标准化器
OptionsNormalizer,允许插件接受非对象简写配置;工厂泛型新增R参数 - buildProgress:非 TTY 环境(CI/CD)自动降级为日志输出;补充进度阶段说明(config → resolve → transform → bundle → write → done)
- generateRouter:补充
metaMapping默认值说明({ navigationBarTitleText: 'title', requireAuth: 'requireAuth' });nameStrategy: 'custom'必须提供customNameGenerator - generateVersion:补充
customFormat占位符完整文档
[0.0.8] - 2026-05-21
新增 injectLoading 全局 Loading 状态管理插件,此插件存在严重问题,请尽快升级到 0.0.9 版本
新增
injectLoading插件:注入全局 Loading 状态管理(运行时 APIwindow.__LOADING_MANAGER__)- 白屏 Loading(
defaultVisible,HTML 解析即显示)、自动隐藏时机(DOMContentLoaded/load/manual) - 请求自动拦截(
autoBind:fetch/xhr/all/none)、请求过滤(requestFilter) - 四种内置图标(
spinner/dots/pulse/bar)、过渡动画、最小显示时间、延迟显示、防抖隐藏、自定义样式 / 模板、生命周期回调、SSR 安全、销毁清理
- 白屏 Loading(
[0.0.7] - 2026-05-19
新增 buildProgress 构建进度条插件
新增
buildProgress插件:在终端实时显示构建进度条- 三种显示格式(
bar/spinner/minimal)、基于构建生命周期计算进度(config 5% → resolve 10% → transform 15%-85% → bundle +10% → write +5% → done 100%) - 自定义宽度 / 填充字符 / 颜色主题、可选显示当前模块名称(超长截断)、非 TTY 降级日志输出、
destroy()停止动画并恢复终端光标
- 三种显示格式(
[0.0.6] - 2026-05-18
新增插件销毁生命周期及子路径类型导出,优化日志系统
新增
- 销毁生命周期:BasePlugin 新增
destroy()虚方法(默认注销日志配置),toPlugin()在closeBundle末尾自动调用;generateRouter 文件监听器清理迁移至destroy() - Logger:新增
Logger.unregister(pluginName)静态方法;Logger.destroy()清除所有配置并重置单例 - 子路径类型导出:factory(
PluginFactory/OptionsNormalizer/PluginWithInstance/BasePluginOptions)、plugins(各插件 Options 及RouteConfig/RouteMeta等)、common(CopyOptions/CopyResult/DateFormatOptions)
增强
- injectIco:统一图标接口类型名称为
Icon(替代旧名IconConfig) - common/fs:
readFileSync标记为废弃(推荐异步版readFileContent);CopyOptions新增parallelLimit(默认 10)与skipEmptyDirs
[0.0.5] - 2026-03-05
generateVersion 支持在构建过程中自动生成版本号,支持多种格式和输出方式
新增
- generateRouter:根据 uni-app 项目的
pages.json自动生成路由配置文件(pagesJsonPath/outputPath/outputFormat/nameStrategy/includeSubPackages/watch/metaMapping/preserveRouteChanges)
[0.0.4] - 2026-02-28
添加 generateVersion 插件及 format 工具导出,优化文件复制和对象合并逻辑,改进图标注入插件
新增
- core 包 common 模块导出 format 工具
- plugins 模块添加并导出
generateVersion插件
增强
- 重构
readDirRecursive接口(返回文件 / 目录条目信息,减少冗余 stat 调用) - 引入并发限制机制,实现并行文件复制;
copySourceToTarget支持并行复制与增量更新 deepMerge支持跳过 undefined,完善嵌套对象合并规则- Logger 增加日志图标和颜色,提升控制台输出可读性
- injectIco 改用 Vite 官方
HtmlTagDescriptor接口注入图标标签,增加自定义 link 标签处理;transformIndexHtml同时兼容字符串替换与标签注入两种方式
[0.0.3] - 2026-02-04
插件工厂、日志系统与泛型验证全面升级
新增
- 插件工厂新增
safeExecuteSync同步安全执行函数 - 日志系统升级为单例框架:新增
PluginLogger接口(插件级独立日志代理),统一输出格式(时间戳 / 命名空间 / 图标 / 颜色),日志级别升级为success/info/warn/error四级,通过插件配置映射管理日志开关 - Validator 泛型化:升级为泛型设计(编译时类型安全),fluent API 支持链式类型推断,自定义验证函数与默认值方法类型安全
- BasePlugin 泛型化:集成泛型 Validator 实现类型安全的配置验证,增加泛型参数约束
T/K确保字段与默认值类型匹配 - 更新架构图与 API 文档反映泛型验证机制
[0.0.2] - 2026-01-26
架构升级(封装插件工厂)、优化日志功能、新增参数校验,copyFile 与 injectIco 插件各新增两个参数
增强
- copyFile / injectIco 新增配置:
incremental(增量复制,仅复制修改过的文件,默认true)、errorStrategy(错误处理策略'throw'/'log'/'ignore',默认'throw')
[0.0.1] - 2026-01-21
首个版本,提供 copyFile 与 injectIco 两个插件
新增
- copyFile 插件:在 Vite 构建完成后复制文件或目录到指定位置(
sourceDir/targetDir必填,overwrite/recursive/verbose/enabled) - injectIco 插件:在 Vite 构建过程中将网站图标链接注入 HTML 头部(
base/url/link/icons/verbose/enabled/copyOptions)
