Configuration
Site-wide settings live in blogin.json beside the content directory. Every key
is optional. Command-line options override the file.
An unknown key is a warning naming the closest real key, so a typo is reported rather than silently ignored. A key with the wrong type stops the build.
| Key | Type | Default | Meaning |
|---|---|---|---|
title |
string | empty | Site title, available to layouts and feeds. |
base-url |
string | empty | Absolute base, with no trailing slash, for feeds, the sitemap, and canonical links. |
author |
string | empty | Site author, available to layouts and feeds. |
output-dir |
string | public |
Where the build writes, relative to the site root. |
home-section |
string | empty | Section whose listing is also the site root. |
css-framework |
string | none |
Class-map profile: none, bootstrap5, pico, or bulma. |
theme |
string | empty | Name of a directory under themes/ to fall back to for layouts, assets, and static files. |
page-size |
integer | 10 |
Posts per listing page. |
summary-length |
integer | 200 |
Character cap on a summary derived from the body. |
reading-wpm |
integer | 200 |
Words per minute behind the reading-time estimate. |
related-count |
integer | 5 |
Maximum related posts listed on a post's page. |
search-text-length |
integer | 2000 |
Characters of body text indexed per post. |
search-cap |
integer | 10 |
Maximum search results the browser shows. |
clean-urls |
boolean | false |
Extensionless URLs when true. True needs web-server configuration, see Deploying. |
debug |
boolean | false |
Emit provenance comments around rendered partials and pages. |
search |
boolean | true |
Emit the search index and its script. |
highlight |
boolean | false |
Server-side syntax highlighting for fenced code. |
robots |
boolean | true |
Emit robots.txt. |
minify |
boolean | false |
Minify CSS and JavaScript under assets/. Files under static/ are left verbatim. |
fingerprint |
boolean | false |
Name each assets/ file for a hash of its content and rewrite every reference. Files under static/ keep their names. |
image-widths |
list of integers | empty | Widths to write each raster image at, with a srcset wherever a page references it. |
taxonomies |
list of strings | ["tags"] |
Front-matter keys to group posts by. |
feed-formats |
list of strings | ["atom"] |
Any of atom, rss, json. |
languages |
list of strings | empty | Language codes, each built into its own /<code>/ subtree. |
language-config |
map | empty | Per-language overrides such as title, keyed by code. |
sections |
map | empty | Per-section overrides, keyed by section name. See below. |
The fingerprint hash is taken over the file's bytes, not its size and timestamp, so the same input produces the same names on every machine and a rebuild that changes nothing changes no name.
Per-section overrides#
The sections map overrides settings for one section, including its nav label,
nav order, visibility, page size, and whether dates show:
"sections": {
"guide": { "label": "Guide", "order": 1, "page-size": 20 }
}
| Section key | Meaning |
|---|---|
label |
Nav label and listing heading. Defaults to the humanized name. |
order |
Sort position in the nav, ahead of alphabetical. |
page-size |
Posts per listing page for this section. |
nav |
Include the section in the nav when true. |
layout |
Layout name override for the section. |
index-dates |
Show post dates on the section's listing pages (default true). |
show-dates |
Show the post date on the section's post pages (default true). |
Set index-dates or show-dates to false to hide dates on reference-style
sections while a blog keeps them.
A working example#
{
"title": "My Site",
"base-url": "https://example.com",
"clean-urls": true,
"highlight": true,
"minify": true,
"fingerprint": true,
"feed-formats": ["atom", "json"],
"sections": {
"notes": { "label": "Notes", "order": 1, "page-size": 20 }
}
}