@escio/metalsmith-page-map

1.0.3 • Public • Published

@escio/metalsmith-page-map

Metalsmith plugin creating a map of pages keyed by a frontmatter property.

This is useful in combination with plugins like metalsmith-navigation in that it allows you to look up a page by a unique ID and access its generated nav_path, or other properties in its frontmatter.

Installation

$ npm install @escio/metalsmith-page-map

Usage

By default the plugin will map all pages by their frontmatter property "id", if they have one, and assign the resulting map to the metadata property "pages". The property names are however configurabe.

Given pages that have the following frontmatter layout:

id: some-page
title: My page
other: frontmatter
---
Some content

They can be mapped thusly:

const metalsmith = require('metalsmith');
const pageMap = require('@escio/metalsmith-page-map');

metalsmith(
    __dirname
).use(
    pageMap({
        idProperty: 'id', // Map pages by "id" property
        mapProperty: 'pages' // Assign map to metadata property "pages"
    })
).use(
    (files, metalsmith, done) => {
        const metadata = metalsmith.metadata();

        // Log the page:
        console.log(metadata.pages['some-page']);

        done();
    }
).build((err) => {
    if (err) {
        throw err;
    }
});

License

ISC © Escio AS

Package Sidebar

Install

npm i @escio/metalsmith-page-map

Weekly Downloads

1

Version

1.0.3

License

ISC

Last publish

Collaborators

  • sanders54
  • bsantos22
  • wien
  • joakimescio