newechoes/astro.config.mjs

72 lines
1.9 KiB
JavaScript
Raw Normal View History

2025-02-24 16:18:36 +08:00
// @ts-check
import { defineConfig } from "astro/config";
2025-02-24 16:18:36 +08:00
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";
2025-05-04 03:44:10 +08:00
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";
2025-03-03 21:16:16 +08:00
2025-02-24 16:18:36 +08:00
// https://astro.build/config
2025-03-03 21:16:16 +08:00
export default defineConfig({
2025-03-09 14:37:44 +08:00
site: SITE_URL,
output: "static",
trailingSlash: "ignore",
2025-03-09 14:37:44 +08:00
2025-03-08 18:16:42 +08:00
build: {
format: "directory",
2025-03-08 18:16:42 +08:00
},
2025-03-09 14:37:44 +08:00
2025-03-03 21:16:16 +08:00
vite: {
plugins: [tailwindcss()],
2025-03-03 21:16:16 +08:00
},
2025-03-08 18:16:42 +08:00
integrations: [
// 使用Astro官方的MDX支持
mdx(),
2025-03-08 18:16:42 +08:00
react(),
// 使用文章索引生成器
articleIndexerIntegration(),
customSitemapIntegration(),
// 添加压缩插件 (必须放在最后位置)
compressor()
2025-03-08 18:16:42 +08:00
],
2025-03-09 14:37:44 +08:00
// Markdown 配置 - 使用官方语法高亮
2025-03-03 21:16:16 +08:00
markdown: {
// 配置语法高亮
syntaxHighlight: {
// 使用shiki作为高亮器
type: 'shiki',
// 排除mermaid语言不进行高亮处理
excludeLangs: ['mermaid']
},
// Shiki主题配置
shikiConfig: {
2025-05-04 03:44:10 +08:00
// 默认主题 - 必须设置,但最终会被替换为 light/dark 主题
theme: 'github-light',
2025-05-04 03:44:10 +08:00
// 定义明亮和暗黑主题
themes: {
light: 'github-light',
dark: 'github-dark'
},
2025-05-04 03:44:10 +08:00
// 启用代码换行
wrap: true
},
2025-03-03 21:16:16 +08:00
rehypePlugins: [
2025-05-04 03:44:10 +08:00
[rehypeExternalLinks, { target: '_blank', rel: ['nofollow', 'noopener', 'noreferrer'] }],
rehypeCodeBlocks,
rehypeTables
2025-03-03 21:16:16 +08:00
],
gfm: true,
2025-03-09 14:37:44 +08:00
},
adapter: vercel(),
});