809f89af08
- Content collection (one folder per post) with zod schema - /blog, category and tag archives with /sayfa/<n>/ pagination - Post page: breadcrumbs, date badges, share bar, TOC, DIY notice, code copy, license line, prev/next, BlogPosting + BreadcrumbList JSON-LD - Sidebar: Pagefind search, categories, featured fallback, tag cloud - Sätteri HAST plugins for figure/figcaption and external links - Dual-theme Shiki, themed prose, RSS feed, latest posts on home - Three sample posts marked as examples Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
// @ts-check
|
|
import { defineConfig } from 'astro/config';
|
|
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import mdx from '@astrojs/mdx';
|
|
import sitemap from '@astrojs/sitemap';
|
|
import node from '@astrojs/node';
|
|
import icon from 'astro-icon';
|
|
import { satteri } from '@astrojs/markdown-satteri';
|
|
import { externalLinksPlugin, figurePlugin } from './src/lib/markdown-plugins.mjs';
|
|
|
|
/**
|
|
* Dev-only routes (style preview); never part of a production build.
|
|
* @type {import('astro').AstroIntegration}
|
|
*/
|
|
const devRoutes = {
|
|
name: 'dev-routes',
|
|
hooks: {
|
|
'astro:config:setup': ({ command, injectRoute }) => {
|
|
if (command !== 'dev') return;
|
|
injectRoute({ pattern: '/styleguide', entrypoint: './src/dev/Styleguide.astro' });
|
|
},
|
|
},
|
|
};
|
|
|
|
// https://astro.build/config
|
|
export default defineConfig({
|
|
site: 'https://ta1sph.info',
|
|
trailingSlash: 'always',
|
|
// Static by default; only routes with `export const prerender = false` (view counter API) run on the server.
|
|
output: 'static',
|
|
adapter: node({ mode: 'standalone' }),
|
|
integrations: [mdx(), sitemap(), icon({ include: { tabler: ['*'] } }), devRoutes],
|
|
markdown: {
|
|
processor: satteri({ hastPlugins: [figurePlugin, externalLinksPlugin] }),
|
|
// Dual themes; colours switch with [data-theme] in global.css.
|
|
shikiConfig: {
|
|
themes: { light: 'github-light-high-contrast', dark: 'github-dark-high-contrast' },
|
|
defaultColor: false,
|
|
wrap: false,
|
|
},
|
|
},
|
|
vite: {
|
|
plugins: [tailwindcss()],
|
|
},
|
|
});
|