-
Notifications
You must be signed in to change notification settings - Fork 2
/
astro.config.mjs
78 lines (75 loc) · 1.95 KB
/
astro.config.mjs
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import rehypeSlug from 'rehype-slug'; // Add id to headings
import rehypeAutolinkHeadings from 'rehype-autolink-headings'; // Add links to headings
import rehypePrism from 'rehype-prism-plus'; // Syntax
import rehypeExternalLinks from 'rehype-external-links'; // External links
import { serializeSitemap, shouldIndexPage } from './scripts/sitemap.mjs';
import { remarkCodeTitles } from './src/lib/remark-code-titles';
import { writingRedirects } from './scripts/redirect.mjs';
import react from '@astrojs/react';
// https://astro.build/config
export default defineConfig({
site: 'https://arikko.dev',
trailingSlash: 'never',
redirects: {
...(await writingRedirects()),
},
markdown: {
syntaxHighlight: false,
gfm: true,
remarkPlugins: [remarkCodeTitles],
rehypePlugins: [
rehypeSlug,
[
rehypeAutolinkHeadings,
{
behavior: 'wrap',
properties: {
className: ['anchor'],
},
},
],
[
rehypeExternalLinks,
{
target: '_blank',
rel: function (element) {
const href = element.properties.href;
const whiteListedStarts = [
'/',
'#',
'mailto:',
'https://arikko.dev',
];
if (whiteListedStarts.some((start) => href.startsWith(start))) {
return [];
}
return 'noopener noreferrer nofollow';
},
},
],
[
rehypePrism,
{
ignoreMissing: true,
showLineNumbers: true,
},
],
],
},
integrations: [
tailwind(),
mdx(),
sitemap({
serialize: serializeSitemap,
filter: shouldIndexPage,
}),
react(),
],
build: {
format: 'file',
},
});