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});