FineVision / app /astro.config.mjs
thibaud frere
update
99af53b
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
import mermaid from 'astro-mermaid';
import compressor from 'astro-compressor';
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';
import remarkFootnotes from 'remark-footnotes';
import rehypeSlug from 'rehype-slug';
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
import rehypeCitation from 'rehype-citation';
import rehypeCodeCopy from './plugins/rehype/code-copy.mjs';
import rehypeReferencesAndFootnotes from './plugins/rehype/post-citation.mjs';
import remarkIgnoreCitationsInCode from './plugins/remark/ignore-citations-in-code.mjs';
import rehypeRestoreAtInCode from './plugins/rehype/restore-at-in-code.mjs';
import rehypeWrapTables from './plugins/rehype/wrap-tables.mjs';
// Built-in Shiki (dual themes) — no rehype-pretty-code
// Plugins moved to app/plugins/*
export default defineConfig({
output: 'static',
integrations: [
mermaid({ theme: 'forest', autoTheme: true }),
mdx(),
// Precompress output with Gzip only (Brotli disabled due to server module mismatch)
compressor({ brotli: false, gzip: true })
],
devToolbar: {
enabled: false
},
markdown: {
shikiConfig: {
themes: {
light: 'github-light',
dark: 'github-dark'
},
defaultColor: false,
wrap: false,
langAlias: {
// Map MDX fences to TSX for better JSX tokenization
mdx: 'tsx'
}
},
remarkPlugins: [
remarkIgnoreCitationsInCode,
remarkMath,
[remarkFootnotes, { inlineNotes: true }]
],
rehypePlugins: [
rehypeSlug,
[rehypeAutolinkHeadings, { behavior: 'wrap' }],
rehypeKatex,
[rehypeCitation, {
bibliography: 'src/content/bibliography.bib',
linkCitations: true,
csl: "vancouver"
}],
rehypeReferencesAndFootnotes,
rehypeRestoreAtInCode,
rehypeCodeCopy,
rehypeWrapTables
]
}
});