profile/vite.config.ts
ilia 677f56f8fb Profile: location, light/dark themes, project cards, resume
- Configurable location (Thornhill) and footer; optional config location overrides GitHub
- External projects: language badges, drop duplicate Gitea avatars; Gitea API note in config
- Theme switcher limited to light/dark with clear labels; default light
- Resume card, public resume.pdf, PWA PDF navigate fallback denylist
- resolvePublicUrl for assets under Vite base

Made-with: Cursor
2026-03-24 23:00:25 -04:00

62 lines
1.9 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { VitePWA } from 'vite-plugin-pwa';
import CONFIG from './gitprofile.config';
import { createHtmlPlugin } from 'vite-plugin-html';
// https://vitejs.dev/config/
export default defineConfig({
base: CONFIG.base || '/',
plugins: [
react(),
createHtmlPlugin({
inject: {
data: {
metaTitle: CONFIG.seo.title,
metaDescription: CONFIG.seo.description,
metaImageURL: CONFIG.seo.imageURL,
googleAnalyticsScript: CONFIG.googleAnalytics.id
? `<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=${CONFIG.googleAnalytics.id}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${CONFIG.googleAnalytics.id}');
</script>`
: '',
},
},
}),
...(CONFIG.enablePWA
? [
VitePWA({
registerType: 'autoUpdate',
workbox: {
// Omitting navigateFallback can still let some hosts/SW setups treat PDF
// navigations like SPA routes; denylist keeps real files out of the fallback.
navigateFallback: 'index.html',
navigateFallbackDenylist: [/\.pdf$/i],
},
includeAssets: ['logo.png', 'resume.pdf'],
manifest: {
name: 'Portfolio',
short_name: 'Portfolio',
description: 'Personal Portfolio',
icons: [
{
src: 'logo.png',
sizes: '64x64 32x32 24x24 16x16 192x192 512x512',
type: 'image/png',
},
],
},
}),
]
: []),
],
define: {
CONFIG: CONFIG,
},
});