Configuration Guide
Shevky reads src/site.json during build startup via config.load() in base/src/config.js. All configuration fields have built-in fallback defaults.
Core Principles
- Keep
site.jsonas valid JSON (no trailing commas, no comments). - Prefer explicit values over relying solely on defaults.
- Put plugin settings in
pluginConfigs, not mixed with global config. - Put plugin package names in
plugins.
High-Impact Sections
identity
Controls canonical site metadata used across meta tags, RSS, sitemap, and robots generation.
Key fields: author, email, url, themeColor, social.
Important:
identity.urldrives canonical URLs in RSS feeds, sitemap, robots.txt, and OG metadata. Set this to your production URL before building for deployment.
content
Controls language behavior and content listings.
Key fields:
languages.default,languages.supported,languages.canonical- multi-language routingpagination.pageSize,pagination.segment- listing paginationcollections- custom collection definitions for tags/categories/series
build
Controls output behavior:
minify- enables HTML/CSS/JS minificationdebug- enables verbose build logging and debug payloadspageBufferLimit- pages held in memory before flushing (default: 20)outputAliases- post-build path mappings (e.g.,~/404/->~/404.html)
plugins
List plugin package names exactly as installed in npm:
"plugins": [
"@shevky/plugin-robots-txt",
"@shevky/plugin-tailwindcss"
]pluginConfigs
Store plugin runtime settings keyed by the plugin's name field (the runtime name, not the npm package name):
"pluginConfigs": {
"shevky-rss": { "feedFilename": "feed.xml" },
"shevky-open-graph": { "siteName": "My Site" }
}Safe Change Workflow
- Edit
src/site.json. - Run
npm run build. - Inspect
dist/output and build logs. - Run
npm run devand verify pages in browser.
Common Mistakes
| Mistake | Consequence | Fix |
|---|---|---|
Plugin in pluginConfigs but missing from plugins[] | Config is ignored; plugin never loads | Add to both places |
Wrong package name in plugins[] | Plugin load warning; build continues without it | Use exact npm package name |
Incorrect identity.url | Wrong canonical/sitemap/feed/OG URLs | Set to actual production URL |
Mismatched pluginConfigs key | Plugin reads null config | Key must match plugin's name export |
Related
- Configuration Reference - complete field-by-field reference
- CLI Usage