2024-05-28 10:22:20 +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';
|
|
|
|
|
|
|
|
|
|
dayjs.extend(duration);
|
|
|
|
|
|
|
|
|
|
const welcomeMessage = gradientString('cyan', 'magenta').multiline(
|
|
|
|
|
`您好! 欢迎使用 bunny-admin 后台管理
|
|
|
|
|
项目开发访问地址如下:
|
2024-05-28 13:06:49 +08:00
|
|
|
|
http://localhost:6262/
|
2024-05-28 10:22:20 +08:00
|
|
|
|
项目生产访问地址如下:
|
2024-05-28 13:06:49 +08:00
|
|
|
|
http://localhost:6262/`,
|
2024-05-28 10:22:20 +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) => {
|
|
|
|
|
console.log(boxen(gradientString('cyan', 'magenta').multiline(`🎉 恭喜打包完成(总用时${dayjs.duration(endTime.diff(startTime)).format('mm分ss秒')},打包后的大小为${size})`), boxenOptions));
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|