import sequence from 'svelte-sequential-preprocessor'; import adapter from '@sveltejs/adapter-auto'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 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: adapter() }, extensions: ['.svelte', '.md'], preprocess: sequence([vitePreprocess(), mdsvex(mdsvexOptions)]) }; export default config;