Doctor
Not sure why your site won't build, or want a second opinion before you ship? Run:
deno x jsr:@steno/steno doctor
It inspects your project and prints a report, without building anything or touching a single file. Below is exactly what it checks and how to read the result.
Checks
- Deno version: warns if the runtime is older than 2.0.0.
- Config file: fails and stops immediately if the config path (default
content/.steno/config.yml, or--config) does not exist or fails to parse. - Content directory: fails if
contentDirdoes not exist. - Markdown pages: warns if no
.mdfiles are found undercontentDir. - Output directory: informational only. Reports whether
outputalready exists; it is created on build either way. - Data directory: informational. Reports whether
contentDir/_dataexists; it is optional. - Theme: warns if no
themeis declared, since pages then render as plain HTML with no layout. If the theme is a local path (starts with.or/), fails when that directory does not exist. - Plugins: reports the declared count, and how many are
isolatedversustrusted. Trusted plugins produce a warning, since they run in-process with Steno's own Deno permissions. Each plugin specifier is checked against the supported formats (jsr:,npm:,file://,https://); an unsupported format fails the check. - Plugin source policy: warns when
pluginSourcePolicy.allowLocalorallowRemoteHttpis enabled, since both widen which plugin sources may load in-process code. Also warns thatallowNodeBuiltinsonly filters the top-level specifier and does not control transitive imports. - Collections: informational. Reports the number of explicitly configured collections; collections are otherwise auto-detected from content subdirectories regardless of this count.
- Redirects: reports the declared redirect count when greater than zero.
Exit behavior
A failing check (missing config, missing content directory, missing local theme directory, or an
unsupported plugin specifier) marks the run as having errors, prints a summary line asking you to
fix them and try again, and exits with process exit code 1. Anything else just produces an
informational or warning line and doesn't fail the run; a clean run exits 0.