-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathastro.config.mjs
76 lines (64 loc) · 2.26 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
import { defineConfig } from 'astro/config';
import { remarkReadingTime } from './src/utils/remark-reading-time.mjs';
import mdx from "@astrojs/mdx";
import fs from "node:fs";
import { exportAsPng } from './ogImage';
import path from 'node:path';
import { platform } from "node:os";
const og = () => ({
name: "satori-og",
hooks: {
// credits to https://dietcode.io/p/astro-og/ for building og image at build time
"astro:build:done": async ({ dir, pages }) => {
const interFont = fs.readFileSync(
"public/fonts/inter.ttf"
);
const isPlatformWindows = platform() == "win32" ? true : false;
for (const { pathname } of pages) {
if (/(^(posts)\/[a-zA-Z0-9-])/.test(pathname) || /(^(bytes)\/[a-zA-Z0-9-])/.test(pathname)) {
if (pathname.startsWith("posts/")) {
const filename = pathname.slice(6, -1);
const file = fs.readFileSync(`src/content/posts/${filename}.mdx`);
const svg = await exportAsPng(file, interFont);
fs.writeFileSync(
`${isPlatformWindows == true ? dir.pathname.slice(1) : dir.pathname}${pathname}og.png`,
svg
);
} else {
const filename = pathname.slice(6, -1);
const file = await fs.readFileSync(`src/content/bytes/${filename}.mdx`);
const svg = await exportAsPng(file, interFont);
const pathFile = path.join(`${isPlatformWindows == true ? dir.pathname.slice(1) : dir.pathname}`, pathname, `og.png`);
fs.writeFileSync(
pathFile,
svg
);
}
} else if (pathname == "") {
const file = await fs.readFileSync(`src/assets/images/og.png`);
const pathFile = path.join(`${isPlatformWindows == true ? dir.pathname.slice(1) : dir.pathname}`, pathname, `og.png`);
fs.writeFileSync(
pathFile,
file
);
}
}
console.log("satori-og: build finished");
},
}
})
// https://astro.build/config
export default defineConfig({
integrations: [mdx(), og()],
site: 'https://mystica.me',
prefetch: false,
markdown: {
remarkPlugins: [
remarkReadingTime,
],
shikiConfig: {
theme: "slack-dark",
wrap: true
}
}
});