TIP
parserMd.print({ title: 'Pets', layout: 'doc' }) returns ---\ntitle: Pets\nlayout: doc\n---. Render it from a plugin to inject frontmatter into a generated page without depending on yaml directly.
@kubb/parser-md lets Kubb emit .md and .markdown files. Register it alongside parserTs, and any plugin that writes a markdown source has its output serialized automatically.
The parser joins source blocks with blank lines. When file.meta.frontmatter is set, it prepends the YAML envelope, so you need no separate yaml dependency. Pair it with parserTs when a generator emits both TypeScript and documentation files side by side.
Installation
bun add -d @kubb/parser-md@betapnpm add -D @kubb/parser-md@betanpm install --save-dev @kubb/parser-md@betayarn add -D @kubb/parser-md@betaFrontmatter
The parser takes no options of its own. To add a YAML frontmatter block, set frontmatter on a file's meta inside a plugin. The parser then prepends it to the output. Any serializable key-value object works.
| Type: | Record<string, unknown> | null |
|---|---|
| Required: | false |
ast.factory.createFile({
baseName: 'README.md',
path: `${config.output.path}/README.md`,
meta: {
frontmatter: { title: 'API Reference', layout: 'doc' },
},
sources: [...],
})Example
import { defineConfig } from 'kubb'
import { adapterOas } from '@kubb/adapter-oas'
import { parserMd } from '@kubb/parser-md'
export default defineConfig({
input: { path: './petStore.yaml' },
output: { path: './src/gen' },
adapter: adapterOas(),
parsers: [parserMd],
plugins: [],
})import { } from 'kubb'
import { } from '@kubb/adapter-oas'
import { } from '@kubb/parser-md'
import { } from '@kubb/parser-ts'
export default ({
: { : './petStore.yaml' },
: { : './src/gen' },
: (),
: [, ],
: [],
})