metalsmith-jstransformer-layouts
v0.6.0
Published
Metalsmith JSTransformer Templates Plugin
Downloads
13
Readme
Deprecated
This has been merged into metalsmith-jstransformer in order to ease usage.
Metalsmith JSTransformer Layouts 
Metalsmith plugin to process layouts with any JSTransformer.
Installation
npm install --save metalsmith-jstransformer-layoutsCLI
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": {}
}
}JavaScript
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());Example
Use the extension of the layout file to declare which template engine is being used for the templates:
src/layouts/default.jade
---
pretty: true
---
doctype html
html
head
title My Site
body!= contentsWithin the metadata of content in your src directory, declare which layout to use:
src/index.html
---
layout: layouts/default.jade
---
<p>This is my site!</p>Result
<!doctype html>
<html>
<head>
<title>My Site</title>
</head>
<body>
<p>This is my site!</p>
</body>
</html>Configuration
The plugin introduces the following file convention and configuration options.
File Convention
Each document should have a file extension of which JSTransformer engine it uses. It can also contain the following metadata:
layout
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.
src/content/article.md
---
layout: layouts/default.twig
---
This is a Markdown file, rendering within a Twig.js layout.defaultLayout
A boolean to state whether the given document should be the default layout for all content. Overrides the plugin option default.
src/layouts/default.twig
---
defaultLayout: true
---
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{{ contents }}
</body>
</html>Options
You can pass options to metalsmith-jstransformer-layouts with either the JavaScript API or CLI.
default
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"
}
}
}pattern
The discovery pattern used to find layouts. Defaults to layouts/*.
{
"plugins": {
"metalsmith-jstransformer-layouts": {
"pattern": "layouts/**"
}
}
}License
MIT

