Skip to content

VitePress page schema

Built-in id: vitepress:page:1.6

Published at https://hawkeyexl.github.io/manni/schemas/vitepress/1.6.json. A $schema that names this URL resolves to the bundled copy, with no network call.

vitepress:page:1.6 checks the front matter VitePress 1.6 reads from a .md page. It requires nothing, because VitePress has a default for every option. It is one of the platform schemas, which say what a generator accepts rather than what your team agreed.

PropertyValue
Idvitepress:page:1.6
TitleVitePress front matter v1.6
Files it fits.md
DialectDraft 2020-12
Required fieldsNone
Additional propertiesAllowed (additionalProperties: true)
Reference kindbuiltin
On by defaultNo
Upstream referenceFrontmatter config
JSONvitepress/1.6.json

VitePress keeps pages at the repo root, so an override names the directory the schema covers:

manni.config.yaml
meta:
overrides:
- files: "docs/**"
schemas:
- vitepress:page:1.6

For a one-off run, pass the id directly:

Terminal window
manni meta validate docs/ -s vitepress:page:1.6

The four options every VitePress theme honours, plus the default theme’s page-level toggles.

FieldTypeNotes
title, descriptionstringOverride the site-level values.
titleTemplatestring | booleanfalse drops the suffix.
headarray[tag, attrs] pairs injected into <head>.
layoutdoc | home | pageAnything else is rejected.
hero, featuresobject, arrayHome-layout blocks; typed but not pinned.
outlinelevel | [from, to] | deep | false1–6.
asideboolean | left
lastUpdatedboolean | stringA flag, or a date overriding the stamp.
navbar, sidebar, editLink, footer, isHomebooleanPage-level toggles.
pageClassstring

outline is the field this schema exists for. It takes four different shapes, and VitePress ignores a value it does not recognise rather than complaining. So outline: 9 silently gives you the default rather than a deep outline.

Allowed. A key VitePress does not define passes unchecked.

A page carrying the common options, at legal values. This is test/fixtures/platform/vitepress-valid.md, and it passes.

docs/deploying.md
---
title: Deploying
description: How to deploy a VitePress site.
layout: doc
outline: [2, 3]
aside: left
lastUpdated: true
editLink: true
pageClass: deploy-page
head:
- - meta
- name: robots
content: noindex
---

outline: 9 is not a heading level VitePress knows. It ignores the value, and this schema reports it:

test/fixtures/platform/vitepress-bad-outline.md
---
title: Deploying
outline: 9
---
✗ test/fixtures/platform/vitepress-bad-outline.md
/outline must be equal to one of the allowed values (line 3) [vitepress:page:1.6]
/outline must match "else" schema (line 3) [vitepress:page:1.6]
1 file checked, 0 passed, 1 failed, 2 errors

Both lines name the one field. Use a level from 1 to 6, a [from, to] pair, deep, or false.