It took me a bit to put all the pieces together, so I'm posting them here in one place.
If you're making a Perseus site designed for static export, instead of
#[perseus::main(perseus_axum::dflt_server)]
pub fn main<G: Html>() -> PerseusApp<G> {
PerseusApp::new()
...
}
use main_export
, so it looks like
#[perseus::main_export]
pub fn main<G: Html>() -> PerseusApp<G> {
PerseusApp::new()
...
}
But when you do that, you stop using perseus serve
and instead use perseus export -s
(the -s
stands for --serve
), and you can include -w
for watching too, so perseus export -s -w
or perseus export --serve --watch
.
You'll export your static files like you did before, which probably won't be perseus export
despite the tempting --release
option. Instead, you want perseus deploy --export-static
(or -e
), which puts everything in the directory pkg/
.
And that seems to be the happy combination for making static sites with Perseus!