29 lines
673 B
TypeScript
29 lines
673 B
TypeScript
|
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',
|
||
|
};
|
||
|
};
|