15
Static Site Generation (SSG)
Nxpress allows you to pre-render your entire application into static HTML files and copy assets for zero-Node.js hosting.
CLI Command (nxpress export)
Pre-renders all views and assets into static output directories (e.g. GitHub Pages, Netlify, Vercel Static, S3).
CLI Commands
# Default export to out/
nxpress export
# Custom output directory and template engine
nxpress export --out-dir dist/static --engine ejs| Flag | Description | Default |
|---|---|---|
| -o, --out-dir <dir> | Destination output directory | "out" |
| -e, --engine <engine> | Template engine to use | From config or ejs |
| -a, --app-dir <dir> | Custom app/pages directory | From config |
| -c, --components-dir <dir> | Custom components directory | From config |
| --public-dir <dir> | Custom public static directory | "public" |
| --no-tailwind | Disable automatic Tailwind CSS build | false |
Dynamic Routes with generateStaticParams
For dynamic routes (e.g. app/products/[id].ejs), export generateStaticParams() in companion files.
- Nxpress generates static HTML files such as out/products/1/index.html, out/products/2/index.html, out/docs/getting-started/index.html.
- Dynamic routes without generateStaticParams() are skipped during export.
app/products/[id].ts
import type { Request, Response } from '@nxpress/core';
// 1. Generate static route parameters at build time
export async function generateStaticParams() {
const products = await fetchProducts();
return products.map((p) => ({ id: String(p.id) }));
}
// 2. Fetch page props for each param instance
export default async function props(req: Request, res: Response) {
const product = await getProductById(req.params.id);
return { product };
}Catch-All Wildcard Routes (app/docs/[...slug].ts)
export async function generateStaticParams() {
return [
{ slug: 'getting-started' },
{ slug: 'installation/manual' }
];
}