diff --git a/vite.config.ts b/vite.config.ts index 5a33944..b3e6267 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,28 @@ -import { defineConfig } from 'vite' +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 . `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 = `` + return html.replace('', ` ${tag}\n `) + }, + } +} + // https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], +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)], + } })