Add sitemap generation and bunext sitemap command
- Add generateSitemap util (exported as bunext.bunextGenerateSitemap) that builds sitemap.xml from static pages, with exclude patterns, additional paths (array or sync/async function), lastmod from file mtime, trailing slash, and default changefreq/priority options - Let page .server.ts files export a `sitemap` function to list URLs for dynamic routes, or override a static page's entry - Add `bunext sitemap` command reading `sitemap` from bunext.config.ts, writing public/sitemap.xml by default, with --output/--origin flags - Fix handle-routes test leaking a grab-router module mock into bunext-req-handler tests; set global.BUNEXT_ROUTER instead - Ignore /.tmp - Document sitemap usage in README and CLAUDE.md Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -19,6 +19,7 @@ bun run dev # tsc --watch
|
||||
bunext dev # Start dev server with HMR and file watcher
|
||||
bunext build # Bundle all pages for production
|
||||
bunext start # Start production server from pre-built artifacts
|
||||
bunext sitemap # Write public/sitemap.xml using config.sitemap
|
||||
```
|
||||
|
||||
## Architecture
|
||||
@@ -51,6 +52,7 @@ Pages live in `src/pages/`. Server logic is **separated from page files** into c
|
||||
|
||||
**Server file** (`page.server.ts` or `page.server.tsx`) — server-only, never sent to the browser:
|
||||
- Default export or `export const server`: `BunextPageServerFn` — runs server-side before rendering, return value becomes props
|
||||
- `export const sitemap`: `BunextPageSitemapFn` — optional; returns the page's sitemap entries (how dynamic routes get into `bunext sitemap`)
|
||||
|
||||
The framework resolves the companion by replacing the page extension with `.server.ts` or `.server.tsx`. If neither exists, no server function runs and only the default `url` prop is injected.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user