/
svelte.config.js
48 lines (42 loc) · 1.1 KB
/
svelte.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import adapter from '@sveltejs/adapter-cloudflare';
import preprocess from 'svelte-preprocess';
import { mdsvex, escapeSvelte } from 'mdsvex';
import gfm from 'remark-gfm';
import rehypeExternalLinks from 'rehype-external-links';
import shiki from 'shiki';
const h = await shiki.getHighlighter({
theme: '../../../src/lib/shiki-theme',
langs: ['javascript', 'typescript', 'haskell', 'css', 'bash']
});
async function highlighter(code, lang) {
return escapeSvelte(h.codeToHtml(code, { lang }).replaceAll(' tabindex="0"', ''));
}
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: [
preprocess({
postcss: true
}),
mdsvex({
smartypants: {
quotes: true,
ellipses: true,
dashes: 'oldschool'
},
extensions: ['.svelte.md'],
remarkPlugins: [gfm],
rehypePlugins: [
[rehypeExternalLinks, { rel: ['noopener', 'noreferrer', 'nofollow'], target: '_blank' }]
],
highlight: { highlighter }
})
],
extensions: ['.svelte', '.svelte.md', '.md'],
kit: {
adapter: adapter({ preprocess: true }),
files: {
lib: 'src/lib'
}
}
};
export default config;