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: {
52 'vendor-katex': ['katex'],
53 'vendor-utils': ['reading-time', 'mdast-util-to-string']
54 }
55 }
56 }
57 },
58
59 optimizeDeps: {
60 include: ['katex', 'reading-time']
61 },
62
63 plugins: [tailwindcss()]
64 }
65 })