@mdit-vue/plugin-frontmatter
Version:
A markdown-it plugin to get markdown frontmatter
74 lines (50 loc) • 1.96 kB
Markdown
# @mdit-vue/plugin-frontmatter
[](https://www.npmjs.com/package/@mdit-vue/plugin-frontmatter)
[](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)
A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown frontmatter with [gray-matter](https://github.com/jonschlinkert/gray-matter).
- Extracts frontmatter into markdown-it `env.frontmatter`.
- Allows providing default frontmatter via markdown-it `env.frontmatter`.
- Extracts markdown content without frontmatter into markdown-it `env.content`.
- Supports extracting rendered excerpt into markdown-it `env.excerpt`.
## Install
```sh
npm i @mdit-vue/plugin-frontmatter
```
## Usage
```ts
import { frontmatterPlugin } from '@mdit-vue/plugin-frontmatter';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';
const md = MarkdownIt({ html: true }).use(frontmatterPlugin, {
// options
grayMatterOptions: {
excerpt: true,
excerpt_separator: '<!-- more -->',
},
});
const env: MarkdownItEnv = {};
const rendered = md.render(
`\
title: foobar
Everything above **more** comment will be extracted as excerpt.
<!-- more -->
Things below **more** comment will not be included in the excerpt.
`,
env,
);
console.log(env.frontmatter);
console.log(env.content);
console.log(env.excerpt);
```
## Options
### grayMatterOptions
- Type: `GrayMatterOptions`
- Details:
Options of [gray-matter](https://github.com/jonschlinkert/gray-matter).
### renderExcerpt
- Type: `boolean`
- Default: `true`
Render the [excerpt](https://github.com/jonschlinkert/gray-matter#optionsexcerpt) with markdown-it or not.
This option will only take effects when `grayMatterOptions.excerpt` is enabled (disabled by default) or `grayMatterOptions.excerpt_separator` is set (undefined by default).