humanai-web/vite.config.ts
oskar b519b49e0d Add Umami analytics tag to <head> on production builds
Inject the Umami tracking script into index.html via a build-only Vite
plugin (apply: 'build'), so it loads on production but never on the dev
server. Website id comes from PUBLIC_UMAMI_WEBSITE_ID with a fallback to
the gethumanai.pl stats id. The SPA serves PL and EN from the same
index.html, so both language versions get the tag.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 17:00:42 +02:00

29 lines
1,004 B
TypeScript

import { defineConfig, loadEnv, type Plugin } from 'vite'
import react from '@vitejs/plugin-react'
const UMAMI_SRC = 'https://stats.gethumanai.pl/script.js'
// Fallback website id, used when PUBLIC_UMAMI_WEBSITE_ID is not provided.
const UMAMI_FALLBACK_ID = 'f5a3fd87-5ae1-408d-85a6-7af588484d37'
// Injects the Umami analytics tag into <head>. `apply: 'build'` means it runs
// only for production builds (`vite build`) — never on the dev server.
function umami(websiteId: string): Plugin {
return {
name: 'inject-umami',
apply: 'build',
transformIndexHtml(html) {
const tag = `<script defer src="${UMAMI_SRC}" data-website-id="${websiteId}"></script>`
return html.replace('</head>', ` ${tag}\n </head>`)
},
}
}
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const websiteId = env.PUBLIC_UMAMI_WEBSITE_ID || UMAMI_FALLBACK_ID
return {
plugins: [react(), umami(websiteId)],
}
})