import sequence from 'svelte-sequential-preprocessor'; import adapter from '@sveltejs/adapter-auto'; import { vitePreprocess } from '@sveltejs/kit/vite'; import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import { mdsvex, escapeSvelte } from 'mdsvex'; import shiki from 'shiki'; import remarkUnwrapImages from 'remark-unwrap-images'; import remarkToc from 'remark-toc'; import rehypeSlug from 'rehype-slug'; /** @type {import('@sveltejs/kit').Config}*/ /** @type {import('mdsvex').MdsvexOptions} */ const mdsvexOptions = { extensions: ['.md'], layout: { _: dirname(fileURLToPath(import.meta.url)) + '/src/mdsvex.svelte' }, highlight: { highlighter: async (code, lang = 'text') => { const highlighter = await shiki.getHighlighter({ theme: 'poimandres' }); const html = escapeSvelte(highlighter.codeToHtml(code, { lang })); return `{@html \`${html}\` }`; } }, remarkPlugins: [remarkUnwrapImages, [remarkToc, { tight: true }]], rehypePlugins: [rehypeSlug] }; const config = { kit: { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. adapter: adapter() }, extensions: ['.svelte', '.md'], preprocess: sequence([vitePreprocess(), mdsvex(mdsvexOptions)]) }; export default config;