Nxpress LogoNxpressv1.3.8
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
FlagDescriptionDefault
-o, --out-dir <dir>Destination output directory"out"
-e, --engine <engine>Template engine to useFrom config or ejs
-a, --app-dir <dir>Custom app/pages directoryFrom config
-c, --components-dir <dir>Custom components directoryFrom config
--public-dir <dir>Custom public static directory"public"
--no-tailwindDisable automatic Tailwind CSS buildfalse

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' }
  ];
}