欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > vite学习笔记-自定义构建信息打印vite插件

vite学习笔记-自定义构建信息打印vite插件

2025/6/13 18:43:43 来源:https://blog.csdn.net/u012917880/article/details/148603368  浏览:    关键词:vite学习笔记-自定义构建信息打印vite插件

Vite构建信息插件详解

这个自定义Vite插件用于在构建过程中显示友好的提示信息,包括欢迎消息和构建完成后的统计信息。下面我将详细解析这个插件的实现和工作原理。

插件功能概述

该插件主要有两个核心功能:

  1. 构建开始时:显示欢迎消息
  2. 构建完成后:显示构建时间和打包大小

插件实现解析

1. 导入依赖

import type { Plugin } from "vite";
import gradient from "gradient-string";
import { getPackageSize } from "./utils";
import dayjs, { type Dayjs } from "dayjs";
import duration from "dayjs/plugin/duration";
import boxen, { type Options as BoxenOptions } from "boxen";
dayjs.extend(duration);
  • vite:Vite插件类型
  • gradient-string:用于创建渐变色文本
  • getPackageSize:自定义工具函数,计算打包后文件夹大小
  • dayjs:轻量级日期处理库,扩展了duration插件用于时间差计算
  • boxen:在终端创建带边框的文本框

2. 欢迎消息配置

const welcomeMessage = gradient(["cyan", "magenta"]).multiline(`您好! 欢迎使用文泽运维监控平台\nWelcome to the WIZ Operations Monitoring Platform`
);const boxenOptions: BoxenOptions = {padding: 0.5,borderColor: "cyan",borderStyle: "round"
};
  • 使用渐变色(cyan到magenta)创建多行欢迎消息
  • 配置文本框选项:内边距0.5、青色边框、圆角样式

3. 插件主体结构

export function viteBuildInfo(): Plugin {let config: { command: string };let startTime: Dayjs;let endTime: Dayjs;let outDir: string;return {name: "vite:buildInfo",// ...插件钩子函数};
}

插件使用闭包保存以下状态:

  • config:Vite配置信息
  • startTime/endTime:构建开始/结束时间
  • outDir:构建输出目录

4. 插件钩子详解

(1) configResolved 钩子
configResolved(resolvedConfig) {config = resolvedConfig;outDir = resolvedConfig.build?.outDir ?? "dist";
}
  • 在Vite配置解析完成后调用
  • 保存解析后的配置信息
  • 获取输出目录(默认为"dist")
(2) buildStart 钩子
buildStart() {console.log(boxen(welcomeMessage, boxenOptions));if (config.command === "build") {startTime = dayjs();}
}
  • 构建开始时调用
  • 打印带边框的欢迎消息
  • 如果是构建命令(非开发模式),记录开始时间
(3) closeBundle 钩子
closeBundle() {if (config.command === "build") {endTime = dayjs();return new Promise((resolve) => {getPackageSize({folder: outDir,callback: (size: string) => {const buildTime = dayjs.duration(endTime.diff(startTime)).format("mm分ss秒");const message = gradient(["cyan", "magenta"]).multiline(`🎉 恭喜打包完成(总用时${buildTime},打包后的大小为${size}`);console.log(boxen(message, boxenOptions));resolve();}});});}
}
  • 构建完成后调用
  • 记录结束时间
  • 返回Promise确保等待异步操作完成
  • 调用getPackageSize计算打包大小
  • 构建完成消息包含:
    • 构建时间(分钟和秒)
    • 打包后大小
    • 同样应用渐变色和边框样式
  • 调用resolve()标记异步操作完成

插件工作流程

Vite 构建过程 构建信息插件 终端输出 configResolved(配置) 保存配置和输出目录 buildStart() 显示欢迎消息 记录开始时间 closeBundle() 记录结束时间 计算打包大小(异步) 显示构建信息 通知完成(Promise resolve) Vite 构建过程 构建信息插件 终端输出

关键设计考虑

  1. 异步处理:通过返回Promise确保Vite等待打包大小计算完成
  2. 条件执行:只在build命令下记录时间和显示统计信息
  3. 用户体验
    • 使用渐变色提升视觉吸引力
    • 边框美化输出内容
    • 包含emoji表情增加趣味性
  4. 国际化:同时包含中英文欢迎语
  5. 时间格式:使用易读的"分秒"格式显示构建时间

使用场景

这个插件特别适合:

  • 企业级项目构建流程
  • 需要提升开发者体验的场景
  • 展示关键构建指标(时间、大小)
  • 添加品牌标识(如"文泽运维监控平台")

效果

在这里插入图片描述

总结

这个Vite插件通过优雅地利用Vite的插件钩子机制,在构建过程的关键节点添加了友好的提示信息。它不仅提升了开发体验,还提供了有价值的构建指标,帮助开发者快速了解构建结果。插件设计考虑了异步操作处理、条件执行和视觉优化,是一个实用且可扩展的Vite插件示例。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词