import type { PluginOption } from 'vite'; import type { PrintPluginOptions } from '../typing'; import { colors } from '@vben/node-utils'; export const vitePrintPlugin = ( options: PrintPluginOptions = {}, ): PluginOption => { const { infoMap = {} } = options; return { configureServer(server) { const _printUrls = server.printUrls; server.printUrls = () => { _printUrls(); for (const [key, value] of Object.entries(infoMap)) { console.log( ` ${colors.green('➜')} ${colors.bold(key)}: ${colors.cyan(value)}`, ); } }; }, enforce: 'pre', name: 'vite:print-info', }; };