main
1import sitemap from "@astrojs/sitemap";
2import tailwindcss from "@tailwindcss/vite";
3import { defineConfig, fontProviders } from "astro/config";
4import { typst } from "astro-typst";
5import { SITE_CONFIG } from "./src/config";
6import { extractImage } from "./src/integrations/extract-image";
7import { rehypeCleanEndnotes } from "./src/plugins/rehype-clean-endnotes";
8import { rehypeExternalLinks } from "./src/plugins/rehype-external-links";
9
10const protocol = SITE_CONFIG.website.split("://")[0];
11const site = SITE_CONFIG.website.split("://")[1].split("/")[0];
12const base = SITE_CONFIG.website.split(site).slice(1).join("/") || undefined;
13
14// https://astro.build/config
15export default defineConfig({
16 site: `${protocol}://${site}`,
17 base: base,
18 prefetch: true,
19 fonts: [
20 {
21 provider: fontProviders.fontsource(),
22 name: "Libertinus Serif",
23 cssVariable: "--font-libertinus-serif",
24 fallbacks: ["Libertinus Serif"],
25 styles: ["normal", "italic"],
26 weights: [400, 700],
27 },
28 ],
29 integrations: [
30 typst({
31 options: {
32 remPx: 16,
33 },
34 target: "html",
35 }),
36 extractImage({
37 dir: SITE_CONFIG.assetDir,
38 }),
39 sitemap(),
40 ],
41 markdown: {
42 rehypePlugins: [rehypeCleanEndnotes, rehypeExternalLinks],
43 },
44 vite: {
45 plugins: [tailwindcss()],
46 ssr: {
47 external: ["@myriaddreamin/typst-ts-node-compiler"],
48 },
49 },
50});