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>
This commit is contained in:
parent
efc6ecf3c8
commit
b519b49e0d
|
|
@ -1,7 +1,28 @@
|
||||||
import { defineConfig } from 'vite'
|
import { defineConfig, loadEnv, type Plugin } from 'vite'
|
||||||
import react from '@vitejs/plugin-react'
|
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/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig(({ mode }) => {
|
||||||
plugins: [react()],
|
const env = loadEnv(mode, process.cwd(), '')
|
||||||
|
const websiteId = env.PUBLIC_UMAMI_WEBSITE_ID || UMAMI_FALLBACK_ID
|
||||||
|
return {
|
||||||
|
plugins: [react(), umami(websiteId)],
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue