/** * Post-build script: inline remaining external assets (favicon) into index.html * and remove leftover files so only a single HTML file remains. */ import { readFileSync, writeFileSync, rmSync, existsSync } from 'fs' import { join, dirname } from 'path' import { fileURLToPath } from 'url' const __dirname = dirname(fileURLToPath(import.meta.url)) const distDir = join(__dirname, '..', 'dist') // Read favicon SVG and encode as data URI const faviconPath = join(distDir, 'favicon.svg') if (existsSync(faviconPath)) { const svgContent = readFileSync(faviconPath, 'utf8') const encoded = Buffer.from(svgContent).toString('base64') const dataUri = `data:image/svg+xml;base64,${encoded}` // Replace the favicon link in index.html const indexPath = join(distDir, 'index.html') let html = readFileSync(indexPath, 'utf8') html = html.replace( /]*href="[^"]*favicon\.svg"[^>]*\/?>/i, `` ) writeFileSync(indexPath, html) // Remove the standalone SVG rmSync(faviconPath) console.log('[inline-assets] Inlined favicon.svg into index.html') } // Remove assets directory if it exists const assetsDir = join(distDir, 'assets') if (existsSync(assetsDir)) { rmSync(assetsDir, { recursive: true }) console.log('[inline-assets] Removed assets/ directory') } // Remove any leftover SVG files (e.g. icons.svg from old Svelte builds) import { readdirSync } from 'fs' for (const file of readdirSync(distDir)) { if (file.endsWith('.svg')) { rmSync(join(distDir, file)) console.log(`[inline-assets] Removed ${file}`) } } console.log('[inline-assets] Done — dist/ contains only index.html')