platform-codebase/@packages/@utils/vite-version-plugin/src/console-banner.ts
2026-01-18 09:20:24 -08:00

73 lines
2.2 KiB
TypeScript
Executable file

/**
* Console banner for displaying app version in browser console
*
* Uses global constants injected by versionPlugin:
* - __APP_NAME__
* - __APP_VERSION__
* - __BUILD_TIME__
* - __GIT_COMMIT__
*
* @example
* ```ts
* // In your app's entry point (main.tsx or App.tsx)
* import { logVersionBanner } from '@lilith/vite-version-plugin/console';
*
* logVersionBanner();
* ```
*/
declare const __APP_NAME__: string;
declare const __APP_VERSION__: string;
declare const __BUILD_TIME__: string;
declare const __GIT_COMMIT__: string;
/**
* Logs a styled version banner to the browser console
*
* @param options Optional customization
*/
export function logVersionBanner(options?: {
primaryColor?: string;
secondaryColor?: string;
}): void {
const {
primaryColor = '#ff00ff',
secondaryColor = '#00ffff',
} = options || {};
const appName = typeof __APP_NAME__ !== 'undefined' ? __APP_NAME__ : 'App';
const version = typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.0.0';
const buildTime = typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : 'unknown';
const gitCommit = typeof __GIT_COMMIT__ !== 'undefined' ? __GIT_COMMIT__ : 'unknown';
// Format build time to be more readable
const formattedTime = buildTime !== 'unknown'
? new Date(buildTime).toLocaleString()
: 'unknown';
console.log(
`%c ${appName} v${version} %c ${gitCommit} %c Built: ${formattedTime} `,
`background: ${primaryColor}; color: #000; font-weight: bold; padding: 4px 8px;`,
`background: #333; color: #fff; padding: 4px 8px;`,
`background: ${secondaryColor}; color: #000; padding: 4px 8px;`
);
}
/**
* Returns version info as an object (useful for debugging or display in UI)
*/
export function getVersionInfo(): {
appName: string;
version: string;
buildTime: string;
gitCommit: string;
} {
return {
appName: typeof __APP_NAME__ !== 'undefined' ? __APP_NAME__ : 'App',
version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.0.0',
buildTime: typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : 'unknown',
gitCommit: typeof __GIT_COMMIT__ !== 'undefined' ? __GIT_COMMIT__ : 'unknown',
};
}
export default logVersionBanner;