This has been merged into metalsmith-jstransformer in order to ease usage.
Metalsmith plugin to process layouts with any JSTransformer.
npm install --save metalsmith-jstransformer-layouts
If you are using the command-line version of Metalsmith, you can install via npm, and then add the metalsmith-jstransformer
key to your metalsmith.json
file:
{
"plugins": {
"metalsmith-jstransformer-layouts": {}
}
}
If you are using the JS Api for Metalsmith, then you can require the module and add it to your .use()
directives:
var layouts = require('metalsmith-jstransformer-layouts');
metalsmith.use(layouts());
Use the extension of the layout file to declare which template engine is being used for the templates:
---
pretty: true
---
doctype html
html
head
title My Site
body!= contents
Within the metadata of content in your src
directory, declare which layout to use:
---
layout: layouts/default.jade
---
<p>This is my site!</p>
<!doctype html>
<html>
<head>
<title>My Site</title>
</head>
<body>
<p>This is my site!</p>
</body>
</html>
The plugin introduces the following file convention and configuration options.
Each document should have a file extension of which JSTransformer engine it uses. It can also contain the following metadata:
A string which represents the layout the document should use when rendering. This is absolute path from Metalsmith's src
path. If not provided, will use the default layout, if available.
---
layout: layouts/default.twig
---
This is a Markdown file, rendering within a Twig.js layout.
A boolean to state whether the given document should be the default layout for all content. Overrides the plugin option default
.
---
defaultLayout: true
---
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{{ contents }}
</body>
</html>
You can pass options to metalsmith-jstransformer-layouts
with either the JavaScript API or CLI.
When provided, will set the default layout for all content. Can be overriden with the layout
key in each file's YAML frontmatter.
{
"plugins": {
"metalsmith-jstransformer-layouts": {
"default": "layout/mylayout.swig"
}
}
}
The discovery pattern used to find layouts. Defaults to layouts/*
.
{
"plugins": {
"metalsmith-jstransformer-layouts": {
"pattern": "layouts/**"
}
}
}
MIT