metalsmith-metadata-files

Metalsmith Metadata Files Plugin

Usage no npm install needed!

<script type="module">
  import metalsmithMetadataFiles from 'https://cdn.skypack.dev/metalsmith-metadata-files';
</script>

README

Metalsmith Metadata Files npm version

Build Status Greenkeeper badge Dependency Status

Metalsmith plugin to inject file metadata from matching .json or .yaml files.

Installation

npm install --save metalsmith-metadata-files

CLI

If you are using the command-line version of Metalsmith, you can install via npm, and then add the metalsmith-metadata-files key to your metalsmith.json file:

{
  "plugins": {
    "metalsmith-metadata-files": {
      "pattern": "{**.json,**.yaml}"
    }
  }
}

JavaScript

If you are using the JS Api for Metalsmith, then you can require the module and add it to your .use() directives:

var metadataFiles = require('metalsmith-metadata-files');

metalsmith.use(metadataFiles({
  'pattern': '{**.json,**.yaml}'
}));

Convention

Create .json or .yaml files along-side your content. The data from these files will be injected into the metadata into the matching file.

Example

The following example uses Twig through Metalsmith JSTransformer:

npm install metalsmith-jstransformer jstransformer-twig --save

src/example.twig

<div class="{{class}}">Hello, {{name}}!</div>

src/example.json

{
  "name": "World",
  "metadata-files": [
    "moreoptions.json"
  ]
}

moreoptions.json

{
  "class": "hello"
}

Result

<div class="hello">Hello, World!</div>

Options

metadata-files

An array depicting additional metadata files that are inheritted into the parent file's metadata. Can be added to the file's YAML front-matter, or inside the .json files themselves.

metadata-files://

String values that begin with metadata-files:// will inject the file into the metadata itself.

Options
{
  "person": "metadata-files://component/charlie.json"
}
charlie.json
{
  "name": "Charlie"
}
Result
{
  "person": {
    "name": "Charlie"
  }
}

Configuration

.pattern

The pattern used to find the JSON files. Defaults to {*.json|*.yaml}.

.patternOptions

The minimatch options that are used when matching against the JSON Pattern. Defaults to { matchBase: true }.

.inheritFilePrefix

The prefix that is expected when searching for inheritted files. Defaults to metadata-files://.

License

MIT