From 22d06d71cb64aa1360485c48c51b9716c0096293 Mon Sep 17 00:00:00 2001 From: soranjiro Date: Tue, 2 Dec 2025 22:17:54 +0900 Subject: [PATCH] feat(docs): add post-build script to update routes excluding HTML files --- apps/web/package.json | 3 +- apps/web/scripts/post-build.ts | 57 ++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 apps/web/scripts/post-build.ts diff --git a/apps/web/package.json b/apps/web/package.json index 3f73467..ef99df4 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -5,8 +5,9 @@ "type": "module", "scripts": { "dev": "vite dev", - "build": "pnpm build:docs && vite build", + "build": "pnpm build:docs && vite build && pnpm post-build", "build:docs": "tsx scripts/build-docs.ts", + "post-build": "tsx scripts/post-build.ts", "preview": "vite preview", "deploy": "pnpm build && wrangler pages deploy .svelte-kit/cloudflare", "test": "vitest", diff --git a/apps/web/scripts/post-build.ts b/apps/web/scripts/post-build.ts new file mode 100644 index 0000000..4bbcecd --- /dev/null +++ b/apps/web/scripts/post-build.ts @@ -0,0 +1,57 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const PROJECT_ROOT = path.resolve(__dirname, '..'); +const CLOUDFLARE_DIR = path.join(PROJECT_ROOT, '.svelte-kit/cloudflare'); +const ROUTES_FILE = path.join(CLOUDFLARE_DIR, '_routes.json'); + +interface RoutesJson { + version: number; + description: string; + include: string[]; + exclude: string[]; +} + +const routesJson: RoutesJson = JSON.parse(fs.readFileSync(ROUTES_FILE, 'utf-8')); + +const docsExcludes = routesJson.exclude.filter((rule) => rule.startsWith('/docs/') && rule.endsWith('.html')); + +const htmlLessExcludes = docsExcludes.map((rule) => rule.replace(/\.html$/, '')); + +const newExcludes = [...routesJson.exclude]; +for (const exclude of htmlLessExcludes) { + if (!newExcludes.includes(exclude)) { + newExcludes.push(exclude); + } +} + +if (!newExcludes.includes('/docs')) { + newExcludes.push('/docs'); +} +if (!newExcludes.includes('/docs/user')) { + newExcludes.push('/docs/user'); +} +if (!newExcludes.includes('/docs/developer')) { + newExcludes.push('/docs/developer'); +} +if (!newExcludes.includes('/docs/user/features')) { + newExcludes.push('/docs/user/features'); +} +if (!newExcludes.includes('/docs/user/features/common')) { + newExcludes.push('/docs/user/features/common'); +} +if (!newExcludes.includes('/docs/user/features/home')) { + newExcludes.push('/docs/user/features/home'); +} +if (!newExcludes.includes('/docs/user/features/themes')) { + newExcludes.push('/docs/user/features/themes'); +} + +routesJson.exclude = newExcludes; + +fs.writeFileSync(ROUTES_FILE, JSON.stringify(routesJson, null, '\t')); +console.log('Updated _routes.json with html-less doc paths');