unified

Project: phuctm97/remark-parse-frontmatter

Package: remark-parse-frontmatter@1.0.3

  1. 🎓 Parses and validates Markdown frontmatter (YAML) to data object.
  1. remark 213
  2. unified 180
  3. markdown 152
  4. plugin 136
  5. remark-plugin 81
  6. extension 9
  7. frontmatter 7
  8. yaml 7
  9. commonmark 6
  10. unified-plugin 6

🎓 remark-parse-frontmatter

Github checks npm version Code style GitHub license

Parses and validates Markdown frontmatter (YAML) to file.data.frontmatter.

Validation is done by revalidator.

Built for Remark 12, won't work with Remark 13. Requires remark-frontmatter.

Example

example.js:

const processor = remark()
  .use(require("remark-frontmatter"))
  .use(require("remark-parse-frontmatter"))
  .freeze();

const file = processor.processSync(`
---
title: Hello, World!
---
`);

console.log(file.data.frontmatter);

Output:

{
  title: "Hello, World!"
}

Usage

Install

yarn add remark-parse-frontmatter

Configure

Unified / Remark:

// Without validation
unified()
  .use(require("remark-parse"))
  .use(require("remark-frontmatter"))
  .use(require("remark-parse-frontmatter"))
  .use(require("remark-stringify"));

// With validation
unified()
  .use(require("remark-parse"))
  .use(require("remark-frontmatter"))
  .use(require("remark-parse-frontmatter"), {
    properties: {
      title: { type: "string", required: true },
      tags: { type: "array", maxItems: 4 },
    },
  })
  .use(require("remark-stringify"));
// Without validation.
remark()
  .use(require("remark-frontmatter"))
  .use(require("remark-parse-frontmatter"));

// With validation.
remark()
  .use(require("remark-frontmatter"))
  .use(require("remark-parse-frontmatter"), {
    properties: {
      title: { type: "string", required: true },
      tags: { type: "array", maxItems: 4 },
    },
  });

MDX:

// Without validation.
mdx(mdxText, {
  remarkPlugins: [
    require("remark-unwrap-texts"),
    require("remark-parse-frontmatter"),
  ],
});

// With validation.
mdx(mdxText, {
  remarkPlugins: [
    require("remark-unwrap-texts"),
    [
      require("remark-parse-frontmatter"),
      {
        properties: {
          title: { type: "string", required: true },
          tags: { type: "array", maxItems: 4 },
        },
      },
    ],
  ],
});

Made by @phuctm97.