Skip to content

Extracts only the front matter from a file stream asynchronously and passes to the well known gray-matter library for parsing. Avoids storing entire file in memory to parse front matter.

License

Notifications You must be signed in to change notification settings

matt-rhys-jones/gray-matter-from-file

Repository files navigation

Gray Matter From File

Build Status

Reads the front matter portion of a markdown file (denoted by --- above and below the front matter contents) and passes this to Gray Matter for parsing.

This only reads the front matter of a file and does not load the remaining contents into memory, this results in fast and asynchronous parsing.

Usage

A Markdown file with some front matter and contents underneath.

---
hello: world
---

The remaining contents of this markdown file would be ignored, this module simply retrieves the front matter above.

Use grayMatterFromFile to obtain this front matter, and parse it via the gray-matter module.

const path = require('path');
const grayMatterFromFile = require('gray-matter-from-file').default;
// import grayMatterFromFile from 'gray-matter-from-file';

const filepath = path.resolve(__dirname, 'my-file.md');

grayMatterFromFile(filepath)
    .then(grayMatter => console.log(grayMatter)) // { hello: 'world' }
    .catch(error => console.log(error))

Why Use It

This module uses fs.readFile and readline to stream the front matter from a markdown file line by line, before passing the result to Gray Matter and returning the parsed object.

This ensures that:

  • There are no synchronous file reads to obtain the front matter
  • Only the front matter is ever read into memory, the rest of the file is ignored
  • This should be performant for a large number of front matter reads across many files, perhaps useful for indexing or processing a large set of markdown files in a static site generator

Support

This has only been transpiled for Node 8 (and above) in order to help enourage the community to be on the latest, more secure and more performant versions of Node. I may remove support for Node 8 when it is no longer LTS.

About

Extracts only the front matter from a file stream asynchronously and passes to the well known gray-matter library for parsing. Avoids storing entire file in memory to parse front matter.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published