import { defineConfig, envField, fontProviders, svgoOptimizer, } from "astro/config"; import tailwindcss from "@tailwindcss/vite"; import mdx from "@astrojs/mdx"; import sitemap from "@astrojs/sitemap"; import { unified } from "@astrojs/markdown-remark"; import remarkToc from "remark-toc"; import remarkCollapse from "remark-collapse"; import rehypeCallouts from "rehype-callouts"; import { transformerNotationDiff, transformerNotationHighlight, transformerNotationWordHighlight, } from "@shikijs/transformers"; import { transformerFileName } from "./src/utils/transformers/fileName"; import config from "./astro-paper.config"; export default defineConfig({ site: config.site.url, integrations: [ mdx(), sitemap({ filter: page => config.features?.showArchives !== false || !page.endsWith("/archives/"), }), ], i18n: { locales: ["en"], defaultLocale: "en", routing: { prefixDefaultLocale: false, }, }, markdown: { processor: unified({ remarkPlugins: [ remarkToc, [remarkCollapse, { test: "Table of contents" }], ], rehypePlugins: [rehypeCallouts], }), shikiConfig: { themes: { light: "min-light", dark: "night-owl" }, defaultColor: false, wrap: false, transformers: [ transformerFileName({ style: "v2", hideDot: false }), transformerNotationHighlight(), transformerNotationWordHighlight(), transformerNotationDiff({ matchAlgorithm: "v3" }), ], }, }, vite: { plugins: [tailwindcss()], }, fonts: [ { name: "Noto Serif SC", cssVariable: "--font-noto-serif-sc", provider: fontProviders.google(), fallbacks: ["serif"], weights: [400, 600, 700, 900], styles: ["normal"], formats: ["woff", "ttf"], }, ], env: { schema: { PUBLIC_GOOGLE_SITE_VERIFICATION: envField.string({ access: "public", context: "client", optional: true, }), }, }, experimental: { svgOptimizer: svgoOptimizer(), }, });