📔 A Metalsmith plugin to add a directory of JSON files for use as global metadata in templates, partials and pages.
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.editorconfig
.gitignore
.travis.yml
LICENSE
README.md
package-lock.json
package.json
yarn.lock

README.md

metalsmith-metadata-directory

npm Maintenance Build Status GitHub license

A Metalsmith plugin to add a directory of JSON and/or YAML files for use as global metadata in templates, partials and pages.


About

This plugin supports adding directory of .json & .yml files and makes their contents available to the Metalsmith global metadata without needing to declare multiple files or file names. Subdirectories and multiple files are supported by using a globbing pattern.

Node support

This plugin is supported and tested against all the current Node LTS versions (4, 6 & 8). This plugin should work on Node 0.12 but is not supported for this version.

Installation

Install the plugin using npm, and specify the directory of metadata files you want to use, along with a globbing pattern. Currently, only JSON files are supported.

$ npm install metalsmith-metadata-directory --save-dev

With Metalsmith CLI

Add the plugin to your metalsmith.json file:

{
  "plugins": {
    "metalsmith-metadata-directory": {
      "directory": "/src/data/**/*.json" // or: "/src/data/**/*.yml"
    }
  }
}

With JavaScript

Pass the plugin into metalsmith.use:

var metalsmith = require('metalsmith')
var metadata = require('metalsmith-metadata-directory')

metalsmith.use(metadata({
  directory: '/src/data/**/*.json',
  // or for YAML respectively; be sure to use 'yml' as file suffix
  directory: '/src/data/**/*.yml'
}));

Plugin ordering

It is vital to order Metalsmith plugins correctly. Please make sure this plugin is included above metalsmith-layouts and metalsmith-in-place and any other plugin which may need your metadata.

Usage within Metalsmith

Data is called by referencing the filename without an extension. If there was a global.json file containing a url key, the reference in your page or template would look like:

{{global.url}}

My workflow Garrus has an example of this plugin being used.

Debug mode

This plugin supports debugging output. To enable, use the following command when running Metalsmith:

$ DEBUG=metalsmith-metadata-directory metalsmith

Licence

MIT