乐于分享
好东西不私藏

Vite插件开发框架:14个实用插件与完整工具包

Vite插件开发框架:14个实用插件与完整工具包

版本:0.1.9 | 一个为 Vite 提供实用插件的工具包,同时也是一个完整的插件开发框架


项目概览

@meng-xi/vite-plugin 是一个功能丰富的 Vite 插件工具包,提供了 14 个开箱即用的构建插件 和一套 完整的插件开发框架。它同时支持 ESM 和 CJS 两种模块格式,兼容 Vite 5.x ~ 7.x。

安装

npm install @meng-xi/vite-plugin

快速使用

// vite.config.tsimport { assetManifest, autoImport, buildProgress, compressAssets, envGuard, generateVersion, versionUpdateChecker } from '@meng-xi/vite-plugin'export default defineConfig({  plugins: [    buildProgress(),    autoImport({ imports: { vue: ['ref''reactive'] } }),    compressAssets({ algorithm'both' }),    generateVersion({ format'datetime', outputType'both' }),    versionUpdateChecker(),    envGuard({      required: { VITE_API_URL: { type'url', requiredtrue } }    })  ]})

子路径导入

支持按需导入,减小打包体积:

import { assetManifest } from '@meng-xi/vite-plugin/plugins/asset-manifest'import { formatFileSize } from '@meng-xi/vite-plugin/common/format'import { BasePlugin, createPluginFactory } from '@meng-xi/vite-plugin/factory'

插件开发框架

框架层提供了插件开发的基石——BasePlugin 抽象基类、createPluginFactory 工厂函数和 Logger 日志系统,让开发者可以快速构建规范化的 Vite 插件。

BasePlugin 抽象基类

BasePlugin 是所有插件的基类,封装了插件配置管理、日志记录、生命周期管理、错误处理等核心功能。

核心能力

能力
说明
配置合并
自动将用户配置与默认配置深度合并
参数校验
内置 Validator 链式 API,支持类型、范围、枚举等校验
日志管理
每个插件拥有独立的日志代理,支持按插件开关日志
错误处理
三种错误策略:throw(中断)、log(记录)、ignore(忽略)
生命周期
configResolved
 → 自定义钩子 → closeBundle(自动销毁)
安全执行
safeExecute
 / safeExecuteSync 包裹,异常不中断构建

基础配置项(BasePluginOptions)

interface BasePluginOptions {enabled?: boolean // 是否启用插件,默认 trueverbose?: boolean // 是否启用日志,默认 trueerrorStrategy?: 'throw' | 'log' | 'ignore' // 错误处理策略,默认 'throw'}

继承示例

import { BasePlugin, createPluginFactory } from '@meng-xi/vite-plugin/factory'class MyPlugin extends BasePlugin<MyPluginOptions> {protected getPluginName() {return 'my-plugin'}protected getDefaultOptions() {return { myOption'default' }}protected validateOptions() {this.validator.field('myOption').string().validate()}protected addPluginHooks(pluginPlugin) {		plugin.writeBundle = async () => {await this.safeExecute(() => this.doWork(), '执行工作')}}}export const myPlugin = createPluginFactory(MyPlugin)

createPluginFactory 工厂函数

将插件类转换为 Vite 插件工厂函数,支持选项标准化器(normalizer),允许用户以简写形式传参。

// 基本用法const myPlugin = createPluginFactory(MyPlugin)// 带标准化器(支持字符串或对象配置)const myPlugin = createPluginFactory(MyPluginopt => (typeof opt === 'string' ? { path: opt } : opt))

工厂函数返回的 Vite 插件对象上会挂载 pluginInstance 属性,允许外部访问插件内部状态:

const plugin myPlugin({ myOption'test' })// 构建完成后访问插件实例const instance = plugin.pluginInstance

Logger 日志系统

单例模式的日志管理器,统一管理所有插件的日志输出。

特性

  • 单例模式
    :全局唯一实例,避免日志重复输出
  • 插件隔离
    :每个插件拥有独立的日志代理,可单独开关
  • 彩色输出
    :四种日志类型带不同颜色和图标 
    • success
       — 绿色 ✅
    • info
       — 青色 ℹ️
    • warn
       — 黄色 ⚠️
    • error
       — 红色 ❌
  • 自动管理
    :插件销毁时自动注销日志配置

使用方式

import { Logger } from '@meng-xi/vite-plugin/logger'// 创建日志记录器const logger = Logger.create({ name'my-plugin', enabledtrue })// 创建插件日志代理const pluginLogger = logger.createPluginLogger('my-plugin')pluginLogger.success('操作成功')pluginLogger.info('处理中...')pluginLogger.warn('注意')pluginLogger.error('出错了')// 注销插件日志Logger.unregister('my-plugin')// 销毁单例(测试场景)Logger.destroy()

通用工具模块

@meng-xi/vite-plugin/common 导出了一系列通用工具函数,可供外部直接使用。

子模块
路径
功能说明
concurrencycommon/concurrency
并发控制工具(runWithConcurrency
formatcommon/format
格式化工具(formatFileSizeformatDate
fscommon/fs
文件系统工具(writeFileContentshouldUpdateFileContentcheckSourceExistscopySourceToTarget
htmlcommon/html
HTML 操作工具(injectBeforeTaginjectHeadAndBody、安全过滤、选择器匹配)
pathcommon/path
路径处理工具(normalizePath
scriptcommon/script
脚本处理工具
uicommon/ui
终端 UI 工具(ANSI 控制码)
validationcommon/validation
校验工具(Validator 链式 API、validateGlobalNamevalidateNoScriptInTemplate

Vite 插件集合

assetManifest — 资源清单生成

在构建完成后自动扫描输出目录,生成资源映射清单文件,支持 Vite 标准、Webpack 兼容和自定义三种格式。

核心功能

  • 三种输出格式:vite(标准映射)、webpack(兼容格式)、custom(自定义格式化器)
  • 按入口分组资源(groupByEntry
  • 运行时注入:将清单注入到 HTML 中作为全局变量
  • 文件过滤:支持按扩展名和路径排除

配置项

interface AssetManifestOptions extends BasePluginOptions {outputFormat?: 'vite' | 'webpack' | 'custom' // 清单格式,默认 'vite'outputFile?: string // 输出文件名,默认 'manifest.json'includeExtensions?: string[] // 包含的扩展名publicPath?: string // 公共路径前缀,默认 '/'injectRuntime?: boolean // 注入运行时全局变量,默认 falseruntimeGlobalName?: string // 全局变量名,默认 '__ASSET_MANIFEST__'customFormatter?: CustomFormatter | null // 自定义格式化器groupByEntry?: boolean // 按入口分组,默认 falseexcludeExtensions?: string[] // 排除的扩展名excludePaths?: string[] // 排除的路径}

使用示例

assetManifest({outputFormat'vite',publicPath'https://cdn.example.com/',injectRuntimetrue,groupByEntrytrue})

实例方法

  • getAssetMap()
     — 获取资源映射表
  • getManifest()
     — 获取清单数据(仅 vite 格式)
  • getGroups()
     — 获取按入口分组信息

autoImport — 自动导入

自动注入 import 语句的 Vite 插件,支持预设映射和目录扫描两种方式,可选生成 TypeScript 类型声明文件。

核心功能

  • 预设映射
    :配置模块→标识符的映射关系,自动注入 import 语句
  • 目录扫描
    :递归扫描指定目录,自动发现并注册导出
  • Vue 模板支持
    :自动导入 Vue SFC 模板中使用的 API
  • 类型声明生成
    :自动生成 .d.ts 文件,提供 TypeScript 类型提示
  • 智能去重
    :跳过已显式导入的标识符
  • 注入位置控制
    :支持顶部注入或最后一个 import 后注入

配置项

interface AutoImportOptions extends BasePluginOptions {  imports?: Record<stringstring[]> | ImportMapping[] | Array<...>  // 导入映射  dirs?: string[]                           // 扫描目录列表  dts?: string | boolean                    // 类型声明文件路径,默认 'src/auto-imports.d.ts'  vueTemplate?: boolean                     // Vue 模板自动导入,默认 false  ignore?: string[]                         // 忽略的标识符  fileFilter?: RegExp                       // 文件过滤正则  injectAtPosition?: 'top' | 'after-last-import'  // 注入位置,默认 'top'}

使用示例

autoImport({imports: {vue: ['ref''reactive''computed''watch''onMounted'],'vue-router': ['useRouter''useRoute']},dirs: ['src/composables''src/stores'],dts'src/auto-imports.d.ts',vueTemplatetrue,injectAtPosition'after-last-import'})

实例方法

  • getResolvedImports()
     — 获取所有解析后的导入映射
  • getNameLookup()
     — 获取名称查找映射表

buildProgress — 构建进度条

在终端实时显示构建进度,支持三种显示格式和自定义颜色主题。

核心功能

  • 三种格式
    bar(完整进度条)、spinner(旋转动画)、minimal(精简模式)
  • 实时追踪
    :基于 Vite 生命周期钩子追踪构建各阶段进度
  • 模块名称显示
    :transform 阶段显示当前处理的模块
  • 自定义主题
    :可自定义各部分颜色
  • TTY 降级
    :非 TTY 环境(如 CI/CD)自动降级为日志输出

进度计算

config (5%) → resolve (10%) → transform (15%-85%) → bundle (+10%) → write (+5%) → done (100%)

配置项

interface BuildProgressOptions extends BasePluginOptions {width?: number // 进度条宽度,默认 30format?: 'bar' | 'spinner' | 'minimal' // 显示格式,默认 'bar'completeChar?: string // 完成填充字符,默认 '█'incompleteChar?: string // 未完成填充字符,默认 '░'clearOnComplete?: boolean // 完成后清除,默认 trueshowModuleName?: boolean // 显示模块名,默认 truetheme?: ProgressTheme // 自定义颜色主题}

使用示例

// 默认进度条buildProgress()// 旋转动画buildProgress({ format'spinner' })// 自定义外观buildProgress({width40,completeChar'■',incompleteChar'□',clearOnCompletefalse})

bundleAnalyzer — 构建产物分析

在构建完成后分析产物体积分布、模块依赖等关键指标,生成 JSON 报告和 HTML 可视化图表。

核心功能

  • 体积分析
    :统计 chunk 和模块的原始体积及 gzip 体积
  • 模块排行
    :Top N 大模块排行
  • 文件类型分布
    :按扩展名分类统计体积占比
  • 体积阈值告警
    :超过阈值自动告警
  • 构建对比
    :与上次构建结果对比,显示增减变化
  • HTML 可视化
    :支持 treemap、sunburst、list 三种图表

配置项

interface BundleAnalyzerOptions extends BasePluginOptions {outputFormat?: 'json' | 'html' | 'both' // 报告格式,默认 'json'outputFile?: string // 输出文件名,默认 'bundle-analysis'openAnalyzer?: boolean // 自动打开报告,默认 falsesizeThreshold?: number // 体积阈值(KB),默认 100topModules?: number // Top N 数量,默认 20compareWith?: string | null // 对比报告路径gzipSize?: boolean // 计算 gzip 大小,默认 trueexcludeNodeModules?: boolean // 排除 node_modules,默认 falseexcludePatterns?: string[] // 排除的路径模式includeExtensions?: string[] // 包含的扩展名defaultChartType?: 'treemap' | 'sunburst' | 'list' // 图表类型,默认 'treemap'}

使用示例

bundleAnalyzer({outputFormat'both',sizeThreshold200,topModules30,gzipSizetrue,compareWith'bundle-analysis-prev.json',defaultChartType'treemap'})

实例方法

  • getResult()
     — 获取分析结果

compressAssets — 构建产物压缩

在构建完成后自动压缩输出目录中的文件,支持 gzip 和 brotli 两种算法。

核心功能

  • 双算法支持
    :gzip(.gz)和 brotli(.br),可同时使用
  • 并发压缩
    :可配置并发数,充分利用多核 CPU
  • 文件过滤
    :按扩展名和路径过滤
  • 压缩报告
    :生成 JSON 格式的压缩统计报告
  • 原始文件删除
    :可选删除原始文件,仅保留压缩版本

配置项

interface CompressAssetsOptions extends BasePluginOptions {algorithm?: 'gzip' | 'brotli' | 'both' // 压缩算法,默认 'gzip'threshold?: number // 最小阈值(字节),默认 1024deleteOriginalFile?: boolean // 删除原始文件,默认 falseincludeExtensions?: string[] // 包含的扩展名excludeExtensions?: string[] // 排除的扩展名excludePaths?: string[] // 排除的路径compressionLevel?: number // gzip 级别 1-9,默认 9brotliQuality?: number // brotli 质量 1-11,默认 11reportOutput?: string | false // 报告路径,默认 'compress-report.json'parallelLimit?: number // 并发数,默认 10}

使用示例

compressAssets({algorithm'both',threshold2048,compressionLevel9,brotliQuality11,reportOutput'compress-report.json'})

实例方法

  • getStats()
     — 获取所有文件的压缩统计
  • getSummary()
     — 获取压缩汇总信息

copyFile — 文件复制

在构建完成后将指定源目录的文件复制到目标目录,支持增量复制。

核心功能

  • 增量复制
    :仅复制有变动的文件,跳过未变化的文件
  • 递归复制
    :支持子目录递归
  • 覆盖控制
    :可配置是否覆盖同名文件

配置项

interface CopyFileOptions extends BasePluginOptions {sourceDirstring // 源目录(必填)targetDirstring // 目标目录(必填)overwrite?: boolean // 覆盖同名文件,默认 truerecursive?: boolean // 递归复制,默认 trueincremental?: boolean // 增量复制,默认 true}

使用示例

copyFile({sourceDir'src/assets',targetDir'dist/assets',overwritefalse,incrementaltrue})

envGuard — 环境变量守卫

在构建前校验环境变量的存在性和合法性,支持多种值类型校验、正则匹配和自定义校验函数。

核心功能

  • 多种校验类型
    stringnumberurlbooleanenumjsonsemverpath
  • 范围约束
    minValue/maxValueminLength/maxLength
  • 正则匹配
    pattern 正则校验
  • 自定义校验
    validator 自定义校验函数
  • 失败处理
    :三种策略——error(中断)、warn(警告)、ignore(忽略)
  • 模板生成
    :自动生成 .env.template 文件
  • 运行时守卫
    :注入到 HTML 中,在浏览器端校验环境变量
  • 自动加载
    :自动加载 .env 文件

配置项

interface EnvGuardOptions extends BasePluginOptions {required?: Record<stringEnvFieldRule// 校验规则映射failAction?: 'error' | 'warn' | 'ignore' // 失败处理,默认 'error'generateTemplate?: boolean // 生成模板,默认 truetemplateOutput?: string // 模板路径,默认 '.env.template'runtimeGuard?: boolean // 运行时守卫,默认 falseruntimeGlobalName?: string // 全局变量名,默认 '__ENV_GUARD__'runtimeGuardMode?: 'console' | 'throw' | 'overlay' // 守卫模式envFiles?: string[] // .env 文件列表autoLoadEnv?: boolean // 自动加载,默认 truereportOutput?: string | false // 报告路径validateBeforeBuild?: boolean // 构建前校验,默认 trueshowSummary?: boolean // 显示摘要,默认 true}

使用示例

envGuard({required: {VITE_API_BASE_URL: { type'url', requiredtrue, message'API 地址必须为合法 URL' },VITE_APP_TITLE: { type'string', requiredtrue, minLength1, maxLength50 },VITE_API_TIMEOUT: { type'number', minValue1000, maxValue60000 },VITE_LOG_LEVEL: { type'enum', enumValues: ['debug''info''warn''error'] }},failAction'error',generateTemplatetrue,runtimeGuardtrue,runtimeGuardMode'console'})

实例方法

  • getResult()
     — 获取校验结果
  • getValidationResults()
     — 获取校验结果详情列表

faviconManager — 网站图标管理

管理 favicon 及其他图标链接的注入和文件复制,支持多种配置方式。

核心功能

  • 多种配置方式
    :自定义 link 标签 > 完整 URL > base 路径 + 默认 favicon
  • 多图标支持
    :通过 icons 数组配置多种尺寸和格式的图标
  • 文件复制
    :可选将图标文件复制到构建输出目录
  • 简写配置
    :支持字符串形式传入 base 路径

配置项

interface FaviconManagerOptions extends BasePluginOptions {base?: string // 基础路径,默认 '/'url?: string // 完整图标 URLlink?: string // 自定义 link 标签 HTMLicons?: Icon[] // 图标数组copyOptions?: {// 文件复制配置sourceDirstringtargetDirstringoverwrite?: booleanrecursive?: boolean}}

使用示例

// 简写faviconManager('/assets')// 完整配置faviconManager({base'/assets',icons: [{ rel'icon', href'/favicon.svg', type'image/svg+xml' },{ rel'icon', href'/favicon-32x32.png', sizes'32x32', type'image/png' }],copyOptions: {sourceDir'src/assets/icons',targetDir'dist/assets/icons'}})

generateRouter — 路由配置生成

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

核心功能

  • 自动解析
    :从 pages.json 解析主包和子包页面
  • tabBar 识别
    :自动标记 tabBar 页面
  • 多种命名策略
    pathcamelCasepascalCasecustom
  • 元信息映射
    :将页面 style 字段映射到路由 meta
  • 变更保留
    :保留用户对路由配置的手动修改
  • 文件监听
    :开发模式下自动监听 pages.json 变化
  • 类型声明
    :可选生成 .d.ts 类型声明文件

配置项

interface GenerateRouterOptions extends BasePluginOptions {pagesJsonPath?: string // pages.json 路径,默认 'src/pages.json'outputPath?: string // 输出路径,默认 'src/router.config.ts'outputFormat?: 'ts' | 'js' // 输出格式,默认 'ts'nameStrategy?: NameStrategy // 命名策略,默认 'camelCase'customNameGenerator?: (pathstring) => string // 自定义命名函数includeSubPackages?: boolean // 包含子包,默认 truewatch?: boolean // 监听变化,默认 truemetaMapping?: Record<stringstring// 元信息映射exportTypes?: boolean // 导出类型定义,默认 truepreserveRouteChanges?: boolean // 保留用户修改,默认 truedts?: string | boolean // 类型声明文件路径,默认 false}

使用示例

generateRouter({pagesJsonPath'src/pages.json',outputPath'src/router.config.ts',nameStrategy'camelCase',metaMapping: {navigationBarTitleText'title',requireAuth'requireAuth'},dtstrue})

generateVersion — 版本号生成

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

核心功能

  • 六种格式
    timestampdatedatetimesemverhashcustom
  • 三种输出
    file(文件)、define(全局变量)、both(两者)
  • 自定义模板
    :支持占位符 {YYYY}{MM}{DD}{HH}{mm}{ss}{timestamp}{hash} 等
  • 前缀后缀
    :支持添加版本号前缀和后缀
  • 附加信息
    :通过 extra 选项添加自定义字段

配置项

interface GenerateVersionOptions extends BasePluginOptions {format?: VersionFormat // 版本格式,默认 'timestamp'customFormat?: string // 自定义格式模板semverBase?: string // semver 基础值,默认 '1.0.0'outputType?: 'file' | 'define' | 'both' // 输出类型,默认 'file'outputFile?: string // 输出文件名,默认 'version.json'defineName?: string // 全局变量名,默认 '__APP_VERSION__'hashLength?: number // 哈希长度,默认 8prefix?: string // 前缀suffix?: string // 后缀extra?: Record<stringany// 附加信息}

使用示例

// 时间戳格式 + 文件输出generateVersion({ format'timestamp' })// semver + 全局变量注入generateVersion({ format'semver', semverBase'2.0.0', prefix'v', outputType'define' })// 自定义格式 + 双输出generateVersion({format'custom',customFormat'{YYYY}.{MM}.{DD}-{hash}',hashLength6,outputType'both',extra: { environment'production' }})

htmlInject — HTML 内容注入

根据配置规则将自定义 HTML 内容注入到目标 HTML 文件中,支持多种注入位置和条件注入。

核心功能

  • 多种注入位置
    head-starthead-endbody-startbody-end、CSS 选择器前后
  • 条件注入
    :基于环境变量等条件决定是否注入
  • 模板变量
    :支持 {{varName}} 占位符替换
  • 安全过滤
    :自动过滤危险标签和属性,防止 XSS 攻击
  • 优先级控制
    :通过 priority 控制规则执行顺序
  • 选择器匹配
    :支持 CSS 选择器精确定位注入位置

配置项

interface HtmlInjectOptions extends BasePluginOptions {targetFile?: string // 目标 HTML 文件,默认 'index.html'rulesInjectRule[] // 注入规则数组(必填)security?: SecurityConfig // 安全过滤配置templateVars?: Record<stringstring// 全局模板变量logInjection?: boolean // 输出注入日志,默认 true}interface InjectRule {id?: string // 规则标识contentstring // 注入内容positionInjectPosition // 注入位置selector?: string // CSS 选择器priority?: number // 优先级condition?: InjectCondition // 条件配置templateVars?: Record<stringstring// 规则级模板变量allowScriptInjection?: boolean // 允许注入 script,默认 false}

使用示例

htmlInject({rules: [{id'meta-description',content'<meta name="description" content="{{appName}}">',position'head-end',templateVars: { appName'My Application' }},{id'analytics',content'<script src="/analytics.js"></script>',position'body-end',condition: { type'env', value'PRODUCTION' },allowScriptInjectiontrue}]})

实例方法

  • getInjectionLogs()
     — 获取注入日志

imageOptimizer — 图片优化

在构建完成后自动优化输出目录中的图片文件,使用 sharp 和 svgo 进行压缩和格式转换。

核心功能

  • 七种格式压缩
    :JPEG、PNG、WebP、AVIF、GIF、TIFF、SVG
  • 格式转换
    :位图格式之间的相互转换(如 PNG → WebP、JPEG → AVIF)
  • 并发处理
    :可配置并发数
  • 体积守恒
    :仅当优化后体积更小时才替换原文件
  • 原子写入
    :先写临时文件再重命名,确保异常安全
  • 优雅降级
    :sharp/svgo 不可用时提供清晰提示
  • SVG 优化
    :通过 svgo 插件配置精确控制 SVG 优化

配置项

interface ImageOptimizerOptions extends BasePluginOptions {quality?: FormatQualityOptions // 各格式压缩质量convertToWebp?: Partial<Record<'jpeg' | 'png' | 'gif' | 'tiff'boolean>> // 转 WebPconvertToAvif?: Partial<Record<'jpeg' | 'png' | 'gif' | 'tiff'boolean>> // 转 AVIFconvertMapping?: ConvertMapping // 自定义转换映射(优先级更高)svgo?: SvgoOptions // SVG 优化配置includeExtensions?: string[] // 包含的扩展名excludePaths?: string[] // 排除的路径threshold?: number // 最小阈值(字节),默认 0keepOriginal?: boolean // 保留原文件,默认 truereportOutput?: string | false // 报告路径parallelLimit?: number // 并发数,默认 5maxPixels?: number // 最大像素数,0 不限制}

使用示例

// 仅压缩imageOptimizer({quality: { jpeg80, png6, webp75 },reportOutput'image-optimize-report.json'})// PNG/JPEG → WebP 转换imageOptimizer({convertToWebp: { pngtrue, jpegtrue },keepOriginaltrue,quality: { webp75 }})// SVG 优化imageOptimizer({svgo: {plugins: [{ name'removeViewBox', activefalse },{ name'removeEmptyContainers', activetrue }],multipasstrue}})

实例方法

  • getStats()
     — 获取所有文件的优化统计
  • getSummary()
     — 获取优化汇总信息

loadingManager — 全局 Loading 状态管理

在 HTML 中注入全局 Loading 状态管理代码,提供创建、显示、隐藏和销毁 loading 的完整能力。

核心功能

  • 四种内置图标
    spinnerdotspulsebar
  • 请求自动拦截
    :自动拦截 fetch/XHR 请求管理 loading 状态
  • 请求过滤
    :排除/包含特定 URL、前缀匹配、方法过滤
  • 过渡动画
    :淡入淡出效果,可配置时长和缓动函数
  • 防闪烁机制
    :延迟显示(delayShow)+ 最小显示时间(minDisplayTime)+ 防抖隐藏(debounceHide
  • 白屏 Loading
    defaultVisible + autoHideOn 实现白屏阶段即显示
  • 背景模糊
    :支持 backdrop-filter 模糊效果
  • 生命周期回调
    onBeforeShowonShowonBeforeHideonHideonDestroy
  • 自定义模板
    :支持完全自定义 loading HTML
  • SSR 安全
    :自动检测 SSR 环境

配置项

interface LoadingManagerOptions extends BasePluginOptions {position?: 'center' | 'top' | 'bottom' // 显示位置,默认 'center'defaultText?: string // 默认文本,默认 '加载中...'spinnerType?: SpinnerType // 图标类型,默认 'spinner'style?: LoadingStyle // 自定义样式transition?: TransitionConfig // 过渡动画minDisplayTime?: MinDisplayTime // 最小显示时间delayShow?: DelayShow // 延迟显示debounceHide?: DebounceHide // 防抖隐藏autoBind?: AutoBindMode // 自动拦截模式,默认 'none'requestFilter?: RequestFilter // 请求过滤globalName?: string // 全局变量名,默认 '__LOADING_MANAGER__'customTemplate?: string // 自定义模板defaultVisible?: boolean // 初始可见,默认 falseautoHideOn?: AutoHideOn // 自动隐藏时机,默认 'DOMContentLoaded'callbacks?: LoadingCallbacks // 生命周期回调}

使用示例

// 基本使用loadingManager()// 自动拦截 fetchloadingManager({ autoBind'fetch' })// 白屏 Loading(SPA 场景)loadingManager({defaultVisibletrue,autoHideOn'manual'})// 在应用入口:window.__LOADING_MANAGER__.hide()// 自定义样式 + 防抖loadingManager({style: {overlayColor'rgba(0, 0, 0, 0.5)',spinnerColor'#ff6b6b',backdropBlurtrue},debounceHide: { enabledtrue, duration100 }})

运行时 API

const lm = window.__LOADING_MANAGER__lm.show('加载中...'// 显示lm.hide() // 隐藏lm.forceHide() // 强制隐藏lm.updateText('正在处理...'// 更新文本lm.isVisible() // 检查状态lm.getPendingCount() // 挂起请求数lm.destroy() // 销毁

versionUpdateChecker — 版本更新检查

在运行时定期检查版本号变更,发现新版本时向用户显示刷新提示。通常与 generateVersion 插件配合使用。

核心功能

  • 版本来源
    :支持从全局变量(define)、文件(file)或自动检测(auto
  • 三种提示样式
    modal(弹窗)、banner(横幅)、toast(轻提示)
  • 定时检查
    :可配置检查间隔
  • 可见性检测
    :页面从后台切回时立即检查
  • 自定义 UI
    :支持自定义模板和样式
  • 生命周期回调
    onUpdateAvailableonRefreshonDismiss

配置项

interface VersionUpdateCheckerOptions extends BasePluginOptions {versionSource?: 'define' | 'file' | 'auto' // 版本来源,默认 'auto'defineName?: string // 全局变量名,默认 '__APP_VERSION__'checkUrl?: string // 检查 URL,默认 '/version.json'checkInterval?: number // 检查间隔(ms),默认 300000checkOnVisibilityChange?: boolean // 可见性检查,默认 trueenableInDev?: boolean // 开发模式启用,默认 falsepromptStyle?: 'modal' | 'banner' | 'toast' // 提示样式,默认 'modal'promptMessage?: string // 提示消息refreshButtonText?: string // 刷新按钮文本dismissButtonText?: string // 忽略按钮文本customPromptTemplate?: string // 自定义模板customStyle?: string // 自定义样式onUpdateAvailable?: string // 发现新版本回调onRefresh?: string // 刷新回调onDismiss?: string // 忽略回调}

使用示例

// 配合 generateVersion 使用;(generateVersion({format'datetime',outputType'both',defineName'__APP_VERSION__'}),versionUpdateChecker())// 自定义检查间隔和提示versionUpdateChecker({checkInterval60000,promptStyle'banner',onUpdateAvailable'console.log("新版本:", newVersion); return true;'})

插件速查表

插件
工厂函数
执行阶段
核心用途
assetManifest
assetManifest()
writeBundle (post)
生成资源映射清单
autoImport
autoImport()
transform (pre) + buildEnd
自动注入 import 语句
buildProgress
buildProgress()
全生命周期
终端构建进度条
bundleAnalyzer
bundleAnalyzer()
writeBundle (post)
构建产物体积分析
compressAssets
compressAssets()
writeBundle (post)
gzip/brotli 压缩
copyFile
copyFile()
writeBundle (post)
文件复制
envGuard
envGuard()
configResolved + transformIndexHtml
环境变量校验
faviconManager
faviconManager()
transformIndexHtml + writeBundle
图标管理
generateRouter
generateRouter()
configResolved
路由配置生成
generateVersion
generateVersion()
config + configResolved + writeBundle
版本号生成
htmlInject
htmlInject()
transformIndexHtml (post)
HTML 内容注入
imageOptimizer
imageOptimizer()
writeBundle (post)
图片压缩和格式转换
loadingManager
loadingManager()
transformIndexHtml (post)
全局 Loading 管理
versionUpdateChecker
versionUpdateChecker()
transformIndexHtml (post)
版本更新检查

常见组合方案

生产构建优化

import { compressAssets, imageOptimizer, bundleAnalyzer } from '@meng-xi/vite-plugin'export default defineConfig({plugins: [compressAssets({ algorithm'both' }), imageOptimizer({ convertToWebp: { pngtrue, jpegtrue } }), bundleAnalyzer({ outputFormat'html', openAnalyzertrue })]})

版本管理 + 更新提示

import { generateVersion, versionUpdateChecker } from '@meng-xi/vite-plugin'export default defineConfig({plugins: [generateVersion({ format'datetime', outputType'both' }), versionUpdateChecker({ checkInterval60000 })]})

开发体验增强

import { autoImport, buildProgress, loadingManager } from '@meng-xi/vite-plugin'export default defineConfig({plugins: [buildProgress({ format'spinner' }), autoImport({ imports: { vue: ['ref''reactive''computed'] }, vueTemplatetrue }), loadingManager({ defaultVisibletrue, autoHideOn'manual' })]})

环境安全 + 资源管理

import { envGuard, assetManifest, htmlInject } from '@meng-xi/vite-plugin'export default defineConfig({plugins: [envGuard({required: { VITE_API_URL: { type'url', requiredtrue } },failAction'error'}),assetManifest({ outputFormat'vite', injectRuntimetrue }),htmlInject({rules: [{ content'<meta name="description" content="My App">', position'head-end' }]})]})
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-16 23:10:27 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/754124.html
  2. 运行时间 : 0.222237s [ 吞吐率:4.50req/s ] 内存消耗:5,050.37kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1d959505f632050c232384463124394e
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000865s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000838s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000342s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000257s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000468s ]
  6. SELECT * FROM `set` [ RunTime:0.000205s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000556s ]
  8. SELECT * FROM `article` WHERE `id` = 754124 LIMIT 1 [ RunTime:0.001027s ]
  9. UPDATE `article` SET `lasttime` = 1781622628 WHERE `id` = 754124 [ RunTime:0.027311s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000723s ]
  11. SELECT * FROM `article` WHERE `id` < 754124 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001130s ]
  12. SELECT * FROM `article` WHERE `id` > 754124 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001142s ]
  13. SELECT * FROM `article` WHERE `id` < 754124 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001867s ]
  14. SELECT * FROM `article` WHERE `id` < 754124 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005855s ]
  15. SELECT * FROM `article` WHERE `id` < 754124 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.011587s ]
0.223877s