remark-parse-frontmatter

🎓 Parses and validates Markdown frontmatter (YAML) to data object.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
remark-parse-frontmatter
10101.0.33 years ago3 years agoMinified + gzip package size for remark-parse-frontmatter in KB

Readme

🎓 remark-parse-frontmatter
!Github checkschecks badgechecks url !npm versionnpm badgenpm url !Code stylecode style badgecode style url !GitHub licenselicense badgelicense url
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.