humanai-web/vite.config.ts

29 lines
1,004 B
TypeScript
Raw Normal View History

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)],
}
})