Skip to content

A remark plugin for converting frontmatter metadata into MDX exports

License

Notifications You must be signed in to change notification settings

remcohaszing/remark-mdx-frontmatter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a1dbba0 · Apr 12, 2025

History

93 Commits
Apr 12, 2025
Apr 7, 2025
Mar 22, 2025
Jun 21, 2024
Mar 7, 2021
Feb 1, 2024
Apr 23, 2023
Apr 23, 2023
Apr 23, 2023
Jun 21, 2024
Apr 12, 2025
Apr 12, 2025
Apr 12, 2025
Feb 1, 2024

Repository files navigation

remark-mdx-frontmatter

github actions codecov npm version npm downloads

A remark plugin for converting frontmatter metadata into MDX exports

Table of Contents

Installation

This package depends on the AST output by remark-frontmatter

npm install remark-frontmatter remark-mdx-frontmatter

Usage

This remark plugin takes frontmatter content, and outputs it as JavaScript exports. Both YAML and TOML frontmatter data are supported.

For example, given a file named example.mdx with the following contents:

---
hello: frontmatter
---

Rest of document

The following script:

import { readFile } from 'node:fs/promises'

import { compile } from '@mdx-js/mdx'
import remarkFrontmatter from 'remark-frontmatter'
import remarkMdxFrontmatter from 'remark-mdx-frontmatter'

const { value } = await compile(await readFile('example.mdx'), {
  jsx: true,
  remarkPlugins: [remarkFrontmatter, remarkMdxFrontmatter]
})
console.log(value)

Roughly yields:

export const frontmatter = {
  hello: 'frontmatter'
}

export default function MDXContent() {
  return <p>Rest of document</p>
}

API

The default export is a remark plugin.

Options

  • name: The identifier name of the variable the frontmatter data is assigned to. (Default: frontmatter).
  • parsers: A mapping A mapping of node types to parsers. Each key represents a frontmatter node type. The value is a function that accepts the frontmatter data as a string, and returns the parsed data. By default yaml nodes will be parsed using yaml and toml nodes using toml.

Compatibility

This project is compatible with Node.js 18 or greater.

License

MIT © Remco Haszing