Files
kazoottt-blog/astro.config.mjs
2025-01-30 20:36:06 +08:00

102 lines
2.1 KiB
JavaScript

import cloudflare from '@astrojs/cloudflare'
import mdx from '@astrojs/mdx'
import react from '@astrojs/react'
import sitemap from '@astrojs/sitemap'
import tailwind from '@astrojs/tailwind'
import expressiveCode from 'astro-expressive-code'
import icon from 'astro-icon'
import { defineConfig } from 'astro/config'
import rehypeExternalLinks from 'rehype-external-links'
import remarkUnwrapImages from 'remark-unwrap-images'
import { expressiveCodeOptions } from './src/site.config'
import { remarkReadingTime } from './src/utils/remarkReadingTime.ts'
// https://astro.build/config
export default defineConfig({
site: 'https://blog.kazoottt.top',
output: 'server',
adapter: cloudflare({
mode: 'directory',
runtime: {
mode: process.env.NODE_ENV === 'production' ? 'off' : 'local',
persistTo: process.env.NODE_ENV === 'production' ? undefined : '.wrangler/state/v3/d1'
}
}),
redirects: {
'/article': {
status: 301,
destination: '/posts'
},
'/category': {
status: 301,
destination: '/categories'
},
'/tag': {
status: 301,
destination: '/tags'
},
'/about': {
status: 301,
destination: '/'
}
},
integrations: [
expressiveCode(expressiveCodeOptions),
tailwind({
applyBaseStyles: false
}),
sitemap(),
mdx(),
icon({
include: {
// Include all icons from the icons directory
local: './src/icons/*.svg'
}
}),
react()
],
markdown: {
remarkPlugins: [remarkUnwrapImages, remarkReadingTime],
rehypePlugins: [
[
rehypeExternalLinks,
{
target: '_blank',
rel: ['nofollow, noopener, noreferrer']
}
]
],
remarkRehype: {
footnoteLabelProperties: {
className: ['']
}
}
},
prefetch: true,
vite: {
optimizeDeps: {
exclude: ['@resvg/resvg-js']
},
ssr: {
external: ['@resvg/resvg-js']
},
plugins: [tailwind(), rawFonts([".ttf", ".woff"])],
},
})
function rawFonts(ext) {
return {
name: "vite-plugin-raw-fonts",
// @ts-expect-error:next-line
transform(_, id) {
if (ext.some((e) => id.endsWith(e))) {
const buffer = fs.readFileSync(id);
return {
code: `export default ${JSON.stringify(buffer)}`,
map: null,
};
}
},
};
}