Skip to content

Broccoli plugin to recursively resolve .md files to a nested tree with parsing of content and frontmatter.

License

Notifications You must be signed in to change notification settings

willviles/broccoli-markdown-resolver

Repository files navigation

Broccoli Markdown Resolver

Build Status Download count all time npm

Given an input node, Broccoli Markdown Resolver outputs a file exporting data for our .md files, with content and frontmatter parsed automatically.

Installation

yarn add broccoli-markdown-resolver

Usage

Consider the following folder structure inside our inputNode.

.
├── quick-start.md
├── sdks.md
└── sdks/
    └── node-js.md

Run the resolver and choose an output destination.

var MarkdownResolver = require('broccoli-markdown-resolver');

var outputNode = new MarkdownResolver(inputNodes, {
  outputFile: '/markdown-file-data.js'
});

Data

Require the data

const markdownData = require('./path/to/markdown-file-data');

markdownData.trees

Returns a tree of markdown data for each inputNode.

{
  "path/to/input-node": [
    {
      "path": "path/to/input-node/quick-start",
      "content": "\nGet started quickly with Acme API.\n",
      "attributes": {
        "title": "Quick Start"
      }
    },
    {
      "path": "path/to/input-node/sdks",
      "children": [
        {
          "path": "path/to/input-node/sdks/node-js",
          "content": "\nAbout the Acme Node.js SDK.\n",
          "attributes": {
            "title": "Node.js SDK"
          }
        }
      ],
      "content": "\nAcme offer SDKs in many different languages.\n",
      "attributes": {
        "title": "SDKs",
        "custom-attr": true
      }
    }
  ]
}

markdownData.files

Returns a list of all files in a flat object format.

[
  {
    "path": "path/to/input-node/quick-start",
    "content": "\nGet started quickly with Acme API.\n",
    "attributes": {
      "title": "Quick Start"
    }
  },
  {
    "path": "path/to/input-node/sdks/node-js",
    "content": "\nAbout the Acme Node.js SDK.\n",
    "attributes": {
      "title": "Node.js SDK"
    }
  },
  {
    "path": "path/to/input-node/sdks",
    "children": [
      {
        "path": "path/to/input-node/sdks/node-js",
        "content": "\nAbout the Acme Node.js SDK.\n",
        "attributes": {
          "title": "Node.js SDK"
        }
      }
    ],
    "content": "\nAcme offer SDKs in many different languages.\n",
    "attributes": {
      "title": "SDKs",
      "custom-attr": true
    }
  }
]

About

Broccoli plugin to recursively resolve .md files to a nested tree with parsing of content and frontmatter.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published