diff --git a/svelte.config.js b/svelte.config.js index 5b139b3..26801ec 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,6 +1,9 @@ // svelte adapter -import adapterAuto from '@sveltejs/adapter-auto' + import adapterNode from '@sveltejs/adapter-node' +import adapterVercel from '@sveltejs/adapter-vercel' +import adapterNetlify from '@sveltejs/adapter-netlify' +import adapterCloudflare from '@sveltejs/adapter-cloudflare' import adapterStatic from '@sveltejs/adapter-static' // svelte preprocessor import { mdsvex } from 'mdsvex' @@ -8,51 +11,59 @@ import mdsvexConfig from './mdsvex.config.js' // import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' import preprocess from 'svelte-preprocess' -const adapter = { - auto: adapterAuto(), - node: adapterNode(), - static: adapterStatic({ - pages: 'build', - assets: 'build', - fallback: undefined - }) +function getAdapter() { + if (Object.keys(process.env).some(key => key.includes('VERCEL'))) { + return adapterVercel() + } else if (Object.keys(process.env).some(key => key.includes('NETLIFY'))) { + return adapterNetlify() + } else if (Object.keys(process.env).some(key => key.includes('CF_PAGES'))) { + return adapterCloudflare() + } else { + return process.env.ADAPTER === 'node' + ? adapterNode({ out: 'build' }) + : adapterStatic({ + pages: 'build', + assets: 'build', + fallback: undefined + }) + } } /** @type {import("@svletejs/kit".Config)} */ export default { - extensions: ['.svelte', ...(mdsvexConfig.extensions || [])], - preprocess: [preprocess({ postcss: true }), mdsvex(mdsvexConfig) /*, vitePreprocess()*/], - vitePlugin: { - inspector: true - }, - kit: { - adapter: process.env.ADAPTER - ? adapter[process.env.ADAPTER.toLowerCase()] - : Object.keys(process.env).some(key => ['VERCEL', 'NETLIFY'].includes(key)) - ? adapter['auto'] - : adapter['static'], - alias: { - $lib: './src/lib', - $root: './', - $src: './src', - $routes: './src/routes', - $content: './content' + extensions: ['.svelte', ...(mdsvexConfig.extensions || [])], + preprocess: [preprocess({ postcss: true }), mdsvex(mdsvexConfig) /*, vitePreprocess()*/], + vitePlugin: { + inspector: true }, - csrf: { - checkOrigin: process.env.NODE_ENV === 'development' ? false : true - }, - prerender: { - crawl: true, - handleMissingId: 'warn', - handleHttpError: details => { - // Handle blog trying to prerender relative links that it can't - if (details.status == 404 && details.path.startsWith('/blog' && '/projects') && details.referenceType == 'linked') { - console.warn(`PRERENDER ignored route ${details.path}`) - return - } + kit: { + adapter: getAdapter(), + alias: { + $lib: './src/lib', + $root: './', + $src: './src', + $routes: './src/routes', + $content: './content' + }, + csrf: { + checkOrigin: process.env.NODE_ENV === 'development' ? false : true + }, + prerender: { + crawl: true, + handleMissingId: 'warn', + handleHttpError: ({ status, path, referrer, referenceType, message }) => { + // Handle blog trying to prerender relative links that it can't + if ( + (status == 404 && path.startsWith('/blog')) || + path.startsWith('/projects') || + (path.startsWith('/') && referenceType == 'linked') + ) { + console.warn(`PRERENDER ignored route ${path}`) + return + } - throw new Error(`${details.status} ${details.path} from ${details.referrer}`) - } + throw new Error(`${status} ${path} from ${referrer}, ~~~~~~~~~ message: ${message}~~~~~~~~~`) + } + } } - } } diff --git a/tsconfig.json b/tsconfig.json index 47fa8ec..974c489 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,28 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": false, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "types": ["vite/client", "vite-plugin-pwa/client"] - } + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "outDir": "build", + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "types": ["vite/client"] + }, + "include": [ + "./types/**/$types.d.ts", + "./svelte.config.js", + "./vite.config.js", + "./vite.config.ts", + "./src/**/*.js", + "./src/**/*.ts", + "./src/**/*.svelte", + "./tests/**/*.js", + "./tests/**/*.ts", + "./tests/**/*.svelte" + ], + "exclude": ["node_modules", "build/**/*", "src/lib/template/**/*", "src/generated/**/*"] } diff --git a/vite.config.ts b/vite.config.ts index 0f84e52..5c767a7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -91,8 +91,8 @@ export default defineConfig({ manifest: false, scope: '/', workbox: { - globPatterns: ['posts.json', '**/*.{js,css,html,svg,ico,png,webp,avif}'], - globIgnores: ['**/sw*', '**/workbox-*'] + globPatterns: ['robots.txt', 'posts.json', '**/*.{js,css,html,svg,ico,png,webp,avif}', 'prerendered/**/*.html'], + globIgnores: ['**/sw*', '**/workbox-*', '*.xml', 'feed.json', 'tags.json'] } }) ]