import adapter from '@sveltejs/adapter-static'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import fs from 'fs'; import path from 'path'; /** @type {import('@sveltejs/kit').Config} */ const config = { // Consult https://svelte.dev/docs/kit/integrations // for more information about preprocessors preprocess: vitePreprocess(), kit: { // fallback: the SPA shell served for routes that were not prerendered // (unlisted cities, GPS coordinate routes); the universal load then // resolves the location client-side. Most static hosts serve 404.html // for unknown paths automatically. adapter: adapter({ fallback: '404.html' }), // Pregenerate city pages to improve SEO during static build prerender: { // dynamic per-location routes (14-day, compare, unlisted cities) are // served by the SPA fallback instead of being prerendered handleUnseenRoutes: 'ignore', // a transient geocoding failure for one city should skip that page // (the fallback still serves it), not abort the whole build handleHttpError: ({ path, message }) => { console.warn(`prerender skipped ${path}: ${message}`); }, entries: (() => { try { const citiesPath = path.resolve('src/routes/weather/locations/city-names100.json'); const raw = fs.readFileSync(citiesPath, 'utf-8'); const cities = JSON.parse(raw); if (Array.isArray(cities)) { const cityEntries = cities.map((c) => `/weather/week/${c}`); // Keep the default wildcard to include other routes return ['*', ...cityEntries]; } } catch { // If anything goes wrong, fall back to default behavior } return ['*']; })() } } }; export default config;