bunny-admin-element-thin-i18n/build/info.ts

52 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-05-11 14:48:02 +08:00
import type { Plugin } from "vite";
import { getPackageSize } from "./utils";
import dayjs, { type Dayjs } from "dayjs";
import duration from "dayjs/plugin/duration";
import gradientString from "gradient-string";
import boxen, { type Options as BoxenOptions } from "boxen";
2024-05-12 02:05:33 +08:00
2024-05-11 14:48:02 +08:00
dayjs.extend(duration);
const welcomeMessage = gradientString("cyan", "magenta").multiline(
2024-05-12 02:05:33 +08:00
`您好! 欢迎使用 bunny-admin 后台管理
访
http://localhost:8848/`
2024-05-11 14:48:02 +08:00
);
const boxenOptions: BoxenOptions = {
padding: 0.5,
borderColor: "cyan",
borderStyle: "round"
};
export function viteBuildInfo(): Plugin {
let config: { command: string };
let startTime: Dayjs;
let endTime: Dayjs;
let outDir: string;
return {
name: "vite:buildInfo",
configResolved(resolvedConfig) {
config = resolvedConfig;
outDir = resolvedConfig.build?.outDir ?? "dist";
},
buildStart() {
console.log(boxen(welcomeMessage, boxenOptions));
if (config.command === "build") {
startTime = dayjs(new Date());
}
},
closeBundle() {
if (config.command === "build") {
endTime = dayjs(new Date());
getPackageSize({
folder: outDir,
callback: (size: string) => {
2024-05-12 02:05:33 +08:00
console.log(boxen(gradientString("cyan", "magenta").multiline(`🎉 恭喜打包完成(总用时${dayjs.duration(endTime.diff(startTime)).format("mm分ss秒")},打包后的大小为${size}`), boxenOptions));
2024-05-11 14:48:02 +08:00
}
});
}
}
};
}