Config File

Updated Apr 28, 2026

Livemark is configured by a single file at the root of your project: livemark.config.ts. Drop it next to your package.json, export a defineConfig({...}) call, and Livemark picks it up automatically — no flag, no env var.

Minimal config

Every field is optional. The smallest valid config is just an empty call:

livemark.config.ts
import { defineConfig } from "livemark"

export default defineConfig({})

That picks up every .md file under your project (default include: "**/*.md") and renders it with the standard Livemark theme — sidebar, search, syntax highlighting, dark mode, all defaults.

What you can configure

Every field falls back to a sensible default. The full set:

OptionTypePurpose
includestring | string[]Glob(s) for content files. Default: "**/*.md".
excludestring | string[]Glob(s) to skip (drafts, partials, etc.).
titlestringSite title shown in the header and <title>. Default: "Livemark".
descriptionstringMeta description for SEO/Open Graph. Default: "Markdown site generator".
sitestringCanonical site URL — required for sitemap generation.
faviconstringPath to a favicon image, relative to project root.
logostringPath to a logo image used in the header (falls back to favicon).
codeThemeLightShiki theme nameLight-mode syntax theme. Default: "catppuccin-latte".
codeThemeDarkShiki theme nameDark-mode syntax theme. Default: "catppuccin-mocha".
sectionsSection[]Split content into Docs / Blog / Changelog with their own URL prefixes.
linksLink[]Custom links shown in the header or sidebar.
patchesPatch[]Override a markdown file's frontmatter from config without editing the file.

The full schema lives in source/models/config.tsdefineConfig validates against it with Zod, so typos get a clear error at start-up.

Worked example

Most real sites end up looking something like this:

livemark.config.ts
import { defineConfig } from "livemark"

export default defineConfig({
  title: "My docs",
  description: "Documentation for my project",
  site: "https://docs.example.com",
  include: ["docs/**/*.md", "blog/**/*.md"],
  exclude: "docs/**/_*",
  sections: [
    { title: "Docs", prefix: "/" },
    { title: "Blog", prefix: "/blog/", type: "blog" },
  ],
  links: [
    {
      url: "https://github.com/example/project",
      title: "GitHub",
      icon: "github",
    },
  ],
})

Where to go next

Built with and Livemark