@zyrab/domo-ssg
Version:
A Static Site Generator (SSG) for Domo-based projects.
93 lines (66 loc) • 1.92 kB
Markdown
# @zyrab/domo-ssg
**Minimal static site generator (SSG) for Domo**
Write JavaScript templates using [@zyrab/domo](https://www.npmjs.com/package/@zyrab/domo), define routes and layouts, and generate static HTML files with optional event hydration.
---
## Features
- Declarative page structure with `Domo` and `DomoSVG`
- Simple nested route tree (`routes.js`)
- Custom layout wrapper (`layout.js`)
- Virtual DOM-like output (no DOM dependency during build)
- Hydration-ready: automatic inline scripts for events
- Built-in cleanup and sitemap generation
---
## Installation
```bash
pnpm add -D @zyrab/domo-ssg
```
Note: Use in a pnpm monorepo if you're working with other Domo packages like @zyrab/domo or @zyrab/domo-router.
## Usage
### 1. Scaffold basic structure
```bash
pnpm exec domo-ssg-init
```
This will create:
```js
domo.config.js;
routes.js;
layout.js;
```
### 2. Add a script to your root package.json
```json
{
"scripts": {
"build": "pnpm --filter @zyrab/domo-ssg exec node src/index.js"
}
}
```
### 3. Run the generator
```bash
pnpm build
```
# Project Structure
| File | Purpose |
| ---------------- | ----------------------------------- |
| `routes.js` | Your route tree (nested supported) |
| `layout.js` | Optional layout wrapper |
| `domo.config.js` | Customize output dir, base URL, etc |
# Example Route File
```js
import Domo from "@zyrab/domo";
export const routes = {
"/": () => Domo("div").txt("Hello Home"),
"/about": () => Domo("div").txt("About Page"),
};
```
# Configuration (domo.config.js)
```js
export default {
outDir: "./dist",
routesFile: "./routes.js",
layout: "./layout.js",
exclude: ["css", "js", "assets"],
baseUrl: "https://example.com",
};
```
# License
MIT — © Zyrab