@@ -12,6 +12,7 @@ import { execSync } from "node:child_process";
1212import svelte from "@astrojs/svelte" ;
1313import compress from "astro-compress" ;
1414import tailwindcss from "@tailwindcss/vite" ;
15+ import pagefind from "astro-pagefind" ;
1516
1617let gitVersion = String ( process . env . GIT_VERSION ?? "" ) . slice ( 0 , 7 ) ;
1718
@@ -36,6 +37,39 @@ console.log(
3637 `\x1b[35m[EP]\x1b[0m Fast Build: \x1b[1m\x1b[34m${ fastBuild } \x1b[0m`
3738) ;
3839
40+ import fs from "fs" ;
41+ import p from "path" ;
42+
43+ function syncContentImages ( ) {
44+ function syncDir ( srcDir , destDir ) {
45+ if ( ! fs . existsSync ( srcDir ) ) return ;
46+ const entries = fs . readdirSync ( srcDir , { withFileTypes : true } ) ;
47+ for ( const entry of entries ) {
48+ const srcPath = p . join ( srcDir , entry . name ) ;
49+ const destPath = p . join ( destDir , entry . name ) ;
50+ if ( entry . isDirectory ( ) ) {
51+ syncDir ( srcPath , destPath ) ;
52+ } else if (
53+ entry . isFile ( ) &&
54+ / \. ( j p g | j p e g | p n g | w e b p | g i f | s v g ) $ / i. test ( entry . name )
55+ ) {
56+ fs . mkdirSync ( p . dirname ( destPath ) , { recursive : true } ) ;
57+ fs . cpSync ( srcPath , destPath , { force : true } ) ;
58+ }
59+ }
60+ }
61+
62+ return {
63+ name : "sync-content-images" ,
64+ buildStart ( ) {
65+ console . log (
66+ "\x1b[35m[EP]\x1b[0m Syncing images from src/content/ to public/content/..."
67+ ) ;
68+ syncDir ( "src/content" , "public/content" ) ;
69+ } ,
70+ } ;
71+ }
72+
3973function dontDie ( ) {
4074 return {
4175 name : "dont-die" ,
@@ -87,7 +121,7 @@ export default defineConfig({
87121 } ,
88122 } ,
89123
90- plugins : [ tailwindcss ( ) ] ,
124+ plugins : [ tailwindcss ( ) , syncContentImages ( ) ] ,
91125 } ,
92126 markdown : {
93127 remarkPlugins : [
@@ -113,13 +147,12 @@ export default defineConfig({
113147 redirects : {
114148 // "/planning/": "https://forms.gle/riw6CvML8ck94A4V9",
115149 // "/reviewers/": "https://forms.gle/4GTJjwZ1nHBGetM18",
116- // "/speaker/savannah-ostrowski ": "/speaker/savannah-bailey ",
150+ "/packaging-summit " : "/session/packaging-summit " ,
117151 "/rust-summit" : "/session/rust-summit-at-europython" ,
118152 "/session/rust-summit" : "/session/rust-summit-at-europython" ,
119153 "/25anniversary" : "https://forms.gle/X4vCPsmHy95s5S9Y8" ,
120154 // "/c-api-summit": "/session/c-api-summit",
121155 // "/wasm-summit": "/session/webassembly-summit",
122- // "/programme/rust-summit": "/session/rust-summit",
123156 // "/programme/c-api-summit": "/session/c-api-summit",
124157 // "/programme/wasm-summit": "/session/webassembly-summit",
125158 // "/discord": "https://discord.gg/BhTN2zJPMh",
@@ -151,6 +184,7 @@ export default defineConfig({
151184 // "https://vdo.ninja/?room=EuroPython_2025_Terrace_2B&hash=338a&do",
152185 } ,
153186 integrations : [
187+ pagefind ( ) ,
154188 mdx ( ) ,
155189 svelte ( ) ,
156190 ...( fastBuild
0 commit comments