Skip to content
This repository has been archived by the owner on Sep 4, 2018. It is now read-only.

RobLoach/metalsmith-jstransformer-layouts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deprecated

This has been merged into metalsmith-jstransformer in order to ease usage.

Metalsmith JSTransformer Layouts NPM version

Build Status Dependency Status

Metalsmith plugin to process layouts with any JSTransformer.

Installation

npm install --save metalsmith-jstransformer-layouts

CLI

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!= contents

Within 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