Docs menu

Getting started

IntroductionInstallationProject structure

Building pages

RoutingPagesLayoutsStylingMarkdownContent and dataIslands

Going live

SEO and headDeployingForms

Guides

Build a brochure site

Advanced

Running as a server

Reference

Reference

Reference

Reference

Every setting, export, prop and import in one place.

src/site.imba

Export Type Purpose
url string The live address: canonical links, sitemap, robots. More
meta object Default meta for every page
head def head ctx → array Extra <head> tags. ctx: meta, path, url, absolute()
defaultHead no Turn off the generated SEO tags
trailingSlash yes Canonical links and sitemap as /about/
prefetch 'hover', 'tap', 'eager', no When to prerender linked pages (default 'hover'). More
viewTransitions no Turn off the cross-fade between pages

Page exports

Export Purpose
default The page tag (required)
meta Object, or def meta {params, data, url}
load def load {params, url} → the page's data; may be async
paths Dynamic routes: list of params objects to build
layout A layout tag, or null for none
post def post {form, params, url, request} → {redirect} or a value for the form prop

Page and layout props

Prop Page Layout Value
meta ✓ ✓ Final meta
path ✓ ✓ Current URL path
params ✓ ✓ Dynamic route params
data ✓ What load returned
form ✓ What post returned

Markdown front matter

Any meta key, plus layout: name or layout: false. Other fields reach the layout as meta; the page's headings arrive as meta.headings.

src/content/config.imba

export const collections =
	services:
		required: ['title']        # fail the build if missing
		sort: 'order'              # sort by this field

Imports

import {getCollection, getEntry, Markdown, mode} from '@milktop/imba-pages'
import {getCollection, getEntry} from '@milktop/imba-pages/content'
import {Markdown} from '@milktop/imba-pages/markdown'
  • getCollection(name) → entries; getEntry(name, id) → an entry or null.
  • <Markdown html=…> places rendered HTML.
  • mode is 'dev', 'static' or 'server'.

Commands

Command
imba-pages dev [folder] Dev server with hot reload (PORT, default 3000)
imba-pages build [folder] Static site in dist/
imba-pages start [folder] Production Node server

Generated files

.pages/ (generated code and the server build) and dist/ (the static site). Both can be deleted at any time.