72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
// @ts-check
|
||
import { defineConfig } from "astro/config";
|
||
|
||
import tailwindcss from "@tailwindcss/vite";
|
||
import mdx from "@astrojs/mdx";
|
||
import react from "@astrojs/react";
|
||
import rehypeExternalLinks from "rehype-external-links";
|
||
import { SITE_URL } from "./src/consts";
|
||
import compressor from "astro-compressor";
|
||
import vercel from "@astrojs/vercel";
|
||
import { articleIndexerIntegration } from "./src/plugins/build-article-index.js";
|
||
import { rehypeCodeBlocks } from "./src/plugins/rehype-code-blocks.js";
|
||
import { rehypeTables } from "./src/plugins/rehype-tables.js";
|
||
import { customSitemapIntegration } from "./src/plugins/sitemap-integration.js";
|
||
|
||
// https://astro.build/config
|
||
export default defineConfig({
|
||
site: SITE_URL,
|
||
output: "static",
|
||
trailingSlash: "ignore",
|
||
|
||
build: {
|
||
format: "directory",
|
||
},
|
||
|
||
vite: {
|
||
plugins: [tailwindcss()],
|
||
},
|
||
|
||
integrations: [
|
||
// 使用Astro官方的MDX支持
|
||
mdx(),
|
||
react(),
|
||
// 使用文章索引生成器
|
||
articleIndexerIntegration(),
|
||
customSitemapIntegration(),
|
||
// 添加压缩插件 (必须放在最后位置)
|
||
compressor()
|
||
],
|
||
|
||
// Markdown 配置 - 使用官方语法高亮
|
||
markdown: {
|
||
// 配置语法高亮
|
||
syntaxHighlight: {
|
||
// 使用shiki作为高亮器
|
||
type: 'shiki',
|
||
// 排除mermaid语言,不进行高亮处理
|
||
excludeLangs: ['mermaid']
|
||
},
|
||
// Shiki主题配置
|
||
shikiConfig: {
|
||
// 默认主题 - 必须设置,但最终会被替换为 light/dark 主题
|
||
theme: 'github-light',
|
||
// 定义明亮和暗黑主题
|
||
themes: {
|
||
light: 'github-light',
|
||
dark: 'github-dark'
|
||
},
|
||
// 启用代码换行
|
||
wrap: true
|
||
},
|
||
rehypePlugins: [
|
||
[rehypeExternalLinks, { target: '_blank', rel: ['nofollow', 'noopener', 'noreferrer'] }],
|
||
rehypeCodeBlocks,
|
||
rehypeTables
|
||
],
|
||
gfm: true,
|
||
},
|
||
|
||
adapter: vercel(),
|
||
});
|