123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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(
- `您好! 欢迎使用 pure-admin 开源项目\n我们为您精心准备了下面两个贴心的保姆级文档\nhttps://yiming_chang.gitee.io/pure-admin-doc\nhttps://pure-admin-utils.netlify.app`
- );
- 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
- )
- );
- }
- });
- }
- }
- };
- }
|