- Introduced a new post detailing the implementation of security headers for an Astro site behind Caddy, focusing on Content Security Policy, HSTS, and Referrer Policy. - Added a new post on caching webmention avatars locally at build time to enhance privacy and comply with GDPR. - Implemented a helper function to download and deduplicate webmention avatars, storing them in a cache directory. - Created an Astro integration for garbage collection of orphaned avatar files after the build process.
71 lines
No EOL
1.8 KiB
JavaScript
71 lines
No EOL
1.8 KiB
JavaScript
// @ts-check
|
|
|
|
import mdx from '@astrojs/mdx';
|
|
import sitemap from '@astrojs/sitemap';
|
|
import { defineConfig, fontProviders } from 'astro/config';
|
|
import { loadEnv } from 'vite';
|
|
import avatarCacheSweep from './src/integrations/avatar-cache-sweep';
|
|
|
|
const envMode = process.env.NODE_ENV === 'production' ? 'production' : 'development';
|
|
const envVars = loadEnv(envMode, process.cwd(), '');
|
|
const WEBMENTION_TOKEN = envVars.WEBMENTION_TOKEN || process.env.WEBMENTION_TOKEN || '';
|
|
|
|
// https://astro.build/config
|
|
export default defineConfig({
|
|
site: 'https://adrian-altner.de',
|
|
|
|
vite: {
|
|
define: {
|
|
'globalThis.__WEBMENTION_TOKEN__': JSON.stringify(WEBMENTION_TOKEN),
|
|
},
|
|
},
|
|
|
|
devToolbar: {
|
|
enabled: false,
|
|
},
|
|
|
|
i18n: {
|
|
defaultLocale: 'de',
|
|
locales: ['de', 'en'],
|
|
routing: {
|
|
prefixDefaultLocale: false,
|
|
redirectToDefaultLocale: false,
|
|
},
|
|
},
|
|
|
|
integrations: [
|
|
mdx(),
|
|
sitemap({
|
|
i18n: {
|
|
defaultLocale: 'de',
|
|
locales: { de: 'de-DE', en: 'en-US' },
|
|
},
|
|
}),
|
|
avatarCacheSweep(),
|
|
],
|
|
|
|
fonts: [
|
|
{
|
|
provider: fontProviders.local(),
|
|
name: 'Atkinson',
|
|
cssVariable: '--font-atkinson',
|
|
fallbacks: ['sans-serif'],
|
|
options: {
|
|
variants: [
|
|
{
|
|
src: ['./src/assets/fonts/atkinson-regular.woff'],
|
|
weight: 400,
|
|
style: 'normal',
|
|
display: 'swap',
|
|
},
|
|
{
|
|
src: ['./src/assets/fonts/atkinson-bold.woff'],
|
|
weight: 700,
|
|
style: 'normal',
|
|
display: 'swap',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
],
|
|
}); |