1 import { defineConfig } from 'astro/config'
2 import mdx from '@astrojs/mdx'
3 import sitemap from '@astrojs/sitemap'
4 import remarkMath from 'remark-math'
5 import remarkDirective from 'remark-directive'
6 import rehypeKatex from 'rehype-katex'
7 import remarkEmbeddedMedia from './src/plugins/remark-embedded-media.mjs'
8 import remarkReadingTime from './src/plugins/remark-reading-time.mjs'
9 import rehypeCleanup from './src/plugins/rehype-cleanup.mjs'
10 import rehypeImageProcessor from './src/plugins/rehype-image-processor.mjs'
11 import rehypeCopyCode from './src/plugins/rehype-copy-code.mjs'
12 import remarkTOC from './src/plugins/remark-toc.mjs'
13 import { SITE } from './src/config'
14 import path from 'path'
15
16 import tailwindcss from '@tailwindcss/vite';
17
18 export default defineConfig({
19 site: SITE.website,
20 devToolbar: {
21 enabled: false
22 },
23 output: 'static',
24 build: {
25 inlineStylesheets: 'auto'
26 },
27 image: {
28 service: {
29 entrypoint: 'astro/assets/services/sharp'
30 }
31 },
32 markdown: {
33 shikiConfig: {
34 theme: 'css-variables',
35 wrap: false
36 },
37 remarkPlugins: [remarkMath, remarkDirective, remarkEmbeddedMedia, remarkReadingTime, remarkTOC],
38 rehypePlugins: [rehypeKatex, rehypeCleanup, rehypeImageProcessor, rehypeCopyCode]
39 },
40 integrations: [mdx(), sitemap()],
41 vite: {
42 resolve: {
43 alias: {
44 '@': path.resolve('./src')
45 }
46 },
47
48 build: {
49 rollupOptions: {
50 output: {
51 manualChunks(id) {
52 if (id.includes('node_modules/katex')) return 'vendor-katex'
53 if (
54 id.includes('node_modules/reading-time') ||
55 id.includes('node_modules/mdast-util-to-string')
56 )
57 return 'vendor-utils'
58 }
59 }
60 }
61 },
62
63 optimizeDeps: {
64 include: ['katex', 'reading-time']
65 },
66
67 plugins: [tailwindcss()]
68 }
69 })