remark-mdx-frontmatter
Version:
A remark plugin for converting frontmatter metadata into MDX exports
95 lines (66 loc) • 2.85 kB
Markdown
[](https://github.com/remcohaszing/remark-mdx-frontmatter/actions/workflows/ci.yaml)
[](https://codecov.io/gh/remcohaszing/remark-mdx-frontmatter)
[](https://www.npmjs.com/package/remark-mdx-frontmatter)
[](https://www.npmjs.com/package/remark-mdx-frontmatter)
A [remark](https://remark.js.org) plugin for converting frontmatter metadata into MDX exports
- [Installation](
- [Usage](
- [API](
- [Options](
- [Compatibility](
- [License](
This package depends on the AST output by
[](https://github.com/remarkjs/remark-frontmatter)
```sh
npm install remark-frontmatter remark-mdx-frontmatter
```
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:
```mdx
---
hello: frontmatter
---
Rest of document
```
The following script:
```js
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:
```jsx
export const frontmatter = {
hello: 'frontmatter'
}
export default function MDXContent() {
return <p>Rest of document</p>
}
```
The default export is a [remark](https://remark.js.org) plugin.
- `default`: The default value to export if no frontmatter data is found. (Default: `undefined`).
- `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`](https://github.com/eemeli/yaml)
and `toml` nodes using [`toml`](https://github.com/BinaryMuse/toml-node).
In addition it supports `unist-util-mdx-define`
[](https://github.com/remcohaszing/unist-util-mdx-define#options).
This project is compatible with Node.js 18 or greater.
[](LICENSE.md) © [Remco Haszing](https://github.com/remcohaszing)