Metalsmith plugin to inject file metadata from matching .json
or .yaml
files.
npm install --save metalsmith-metadata-files
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}"
}
}
}
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}'
}));
Create .json
or .yaml
files along-side your content. The data from these files will be injected into the metadata into the matching file.
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"
}
<div class="hello">Hello, World!</div>
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.
{
"person": "metadata-files://component/charlie.json"
}
{
"name": "Charlie"
}
{
"person": {
"name": "Charlie"
}
}
.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://
.
MIT