From 7870d3b3bda80b9e7471a96316b5f679bba3e27d Mon Sep 17 00:00:00 2001 From: mifi Date: Mon, 16 Feb 2026 10:01:29 -0300 Subject: [PATCH] Prettier --- scripts/critical-css.js | 47 +++++++++++++++++++++++++----- src/lib/components/Lightbox.svelte | 7 ++++- src/routes/+layout.ts | 3 +- static/assets/js/script.js | 10 +++++-- 4 files changed, 55 insertions(+), 12 deletions(-) diff --git a/scripts/critical-css.js b/scripts/critical-css.js index 80ecbb4..6fbd1f8 100644 --- a/scripts/critical-css.js +++ b/scripts/critical-css.js @@ -5,6 +5,8 @@ import { readFileSync, writeFileSync, readdirSync } from 'fs'; import { join, dirname } from 'path'; import { fileURLToPath } from 'url'; +import { log, error } from 'node:console'; +import process from 'node:process'; import Beasties from 'beasties'; const __dirname = dirname(fileURLToPath(import.meta.url)); @@ -23,20 +25,49 @@ const beasties = new Beasties({ path: buildDir, preload: 'default', logLevel: 'warn', - inlineThreshold: 50 * 1024, // inline any stylesheet < 50KB - minimumExternalSize: 50 * 1024 // inline any leftover < 50KB - }); + inlineThreshold: 50 * 1024, + minimumExternalSize: 50 * 1024 +}); + +/** + * Remove SvelteKit wrapper div and Svelte SSR fragment comments from HTML. + * With csr = false these add noise and the inline style is unnecessary. + */ +function cleanHtml(html) { + // Remove extra SvelteKit body attribute: data-sveltekit-preload-data="hover" + html = html.replace(//i, ''); + // Remove SvelteKit's root wrapper:
...
+ html = html.replace(//i, ''); + const bodyEnd = html.indexOf(''); + if (bodyEnd !== -1) { + const beforeBody = html.slice(0, bodyEnd); + const lastDiv = beforeBody.lastIndexOf(''); + if (lastDiv !== -1) { + html = beforeBody.slice(0, lastDiv) + beforeBody.slice(lastDiv + 6) + html.slice(bodyEnd); + } + } + // Remove Svelte fragment/hydration comments (unused when csr = false) + html = html + .replace(//g, '') + .replace(//g, '') + .replace(//g, '') + .replace(//g, '') + .replace(//g, ''); + return html; +} async function main() { const htmlFiles = getFiles(buildDir, '.html'); for (const htmlFile of htmlFiles) { - const html = readFileSync(htmlFile, 'utf8'); - const inlined = await beasties.process(html); - writeFileSync(htmlFile, inlined); + let html = readFileSync(htmlFile, 'utf8'); + html = await beasties.process(html); + html = cleanHtml(html); + writeFileSync(htmlFile, html); } - console.log('Critical CSS inlined:', htmlFiles.length, 'file(s)'); + log('Critical CSS inlined:', htmlFiles.length, 'file(s)'); } + main().catch((err) => { - console.error(err); + error(err); process.exit(1); }); diff --git a/src/lib/components/Lightbox.svelte b/src/lib/components/Lightbox.svelte index cafbb3b..fe268ad 100644 --- a/src/lib/components/Lightbox.svelte +++ b/src/lib/components/Lightbox.svelte @@ -5,7 +5,12 @@ */ -