/
astro.config.mjs
62 lines (55 loc) · 1.35 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
import { defineConfig } from "astro/config"
import mdx from "@astrojs/mdx"
import sitemap from "@astrojs/sitemap"
import robotsTxt from "astro-robots-txt"
import vercel from "@astrojs/vercel/serverless"
import db from "@astrojs/db"
import rehypePrettyCode from "rehype-pretty-code"
import { toString } from "mdast-util-to-string"
import readingTime from "reading-time"
import { visit } from "unist-util-visit"
// https://astro.build/config
export default defineConfig({
site: "https://mohammedsh.xyz",
markdown: {
syntaxHighlight: false,
rehypePlugins: [
[
rehypePrettyCode,
{
theme: {
dark: "vitesse-dark",
light: "vitesse-light",
},
keepBackground: false,
},
],
() => (tree, vfile) => {
const data = vfile.data
const payload = Math.round(readingTime(toString(tree)).minutes)
data.astro.frontmatter.readingTime = payload
visit(tree, "element", (node) => {
if (
node.properties?.["data-rehype-pretty-code-title"] !==
""
)
return
node.tagName = "div"
node.properties.slot = "title"
})
},
],
},
integrations: [
mdx(),
sitemap({ changefreq: "daily", lastmod: new Date() }),
robotsTxt({
host: true,
policy: [{ userAgent: "*", disallow: ["/404"] }],
}),
,
db(),
],
output: "hybrid",
adapter: vercel({ webAnalytics: { enabled: true } }),
})