Skip to content
Tags
markdownfrontmatterparserdocsyaml
Details
  • Updated 4 weeks ago
  • Created 4 weeks ago
Official v5.0.0-beta.25 MIT kubb >=5.0.0 node >=22

@kubb/parser-md

Markdown file parser for Kubb. Joins source blocks as plain markdown and renders YAML frontmatter via `parserMd.print`.

Downloads
7.3k / mo
Stars
1.7k
Bundle size
26.2 kB
Updated
4w ago

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

shell
bun add -d @kubb/parser-md@beta
shell
pnpm add -D @kubb/parser-md@beta
shell
npm install --save-dev @kubb/parser-md@beta
shell
yarn add -D @kubb/parser-md@beta

Frontmatter

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
plugin example
typescript
ast.factory.createFile({
  baseName: 'README.md',
  path: `${config.output.path}/README.md`,
  meta: {
    frontmatter: { title: 'API Reference', layout: 'doc' },
  },
  sources: [...],
})

Example

typescript
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: [],
})
typescript
import {  } from 'kubb'
import {  } from '@kubb/adapter-oas'
import {  } from '@kubb/parser-md'
import {  } from '@kubb/parser-ts'

export default ({
  : { : './petStore.yaml' },
  : { : './src/gen' },
  : (),
  : [, ],
  : [],
})

See Also