import { wrapperEnv } from "./utils"; import dayjs, { type Dayjs } from "dayjs"; import gradientString from "gradient-string"; import duration from "dayjs/plugin/duration"; import boxen, { type Options as BoxenOptions } from "boxen"; dayjs.extend(duration); const boxenOptions: BoxenOptions = { padding: 0.94, borderColor: "cyan", borderStyle: "round", textAlignment: "left", }; /* 输出日志信息 */ const printLogMessage = (VITE_PORT: number) => { return gradientString("cyan", "magenta").multiline( `保存成功!服务器重新启动 项目访问地址如下: http://localhost:${VITE_PORT}` ); }; export const viteConsoleLog = (mode) => { const { VITE_PORT } = wrapperEnv(mode); let config: { command: string }; let startTime: Dayjs; let endTime: Dayjs; return { name: "vite:buildInfo", configResolved(resolvedConfig) { config = resolvedConfig; }, buildStart() { console.log(boxen(printLogMessage(VITE_PORT), boxenOptions)); if (config.command === "build") { startTime = dayjs(new Date()); } }, closeBundle() { if (config.command === "build") { endTime = dayjs(new Date()); const format = dayjs.duration(endTime.diff(startTime)).format("mm分ss秒"); console.log( boxen( gradientString("cyan", "magenta").multiline(`🎉 恭喜打包完成(总用时${format})`), boxenOptions ) ); } }, }; };