Assemble plugin for rendering nested template layouts.
Last updated 6 years ago by doowb .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install assemble-layouts 
SYNC missed versions from official npm registry.

assemble-layouts NPM version

Assemble plugin for rendering nested template layouts.


Install with npm:

npm i assemble-layouts --save-dev



Create a new instance of Layouts to generate flattened layout stacks.


var layouts = new Layouts(options);

Default settings for body regex/delimiters:

var options = {
  delims: ['{{', '}}'],     // start and end delimiters for body tag
  expression: '{{ body }}', // default body tag for empty layouts
  matter: '\\s*body\\s*',   // inner contents of body tag regex

Assuming parsedLayouts have been read from the file system and parsed, we can now add them to the layouts cache:

var parsedLayouts = glob.sync('layouts/*.hbs');
parsedLayouts.forEach(function (layout) {
  // `layout` must have at `data` and `content` properties
  layouts.set(, layout);

Render the stack

Render the entire layout stack for a specific page object:

var page = {data: {a: 'b', layout: 'default'}, content: 'Howdy {{name}}!'};
var template = layouts.render(page);

page object

The page object must have data and content properties!

  • options {Object}: global options for how to determine layouts.


Flatten the entire layout stack based on the file and options and how the layout stack is defined.

  • file {Object}: object containing data and contents properties.
  • options {Object}: additional options to override global and/or file options


Store a layout.

  • name {String}: name of the layout to store.
  • layout {Object}: object containing data and content properties.


Return a stored layout.

  • name {String}: name of the layout


Create a layout stack based on options and layout data. Returned stack is an array with the layouts to use going from the top level parent to the lowest level child.

  • options {Object}: used to determine the layout to use.


Return a valid layout name if one should be used, otherwise, returns null to indicate a layout should not be used.

  • layout {String}: layout to use, or a negative value to not use a layout


Brian Woodward

Jon Schlinkert


Copyright (c) 2014 Brian Woodward, contributors.
Released under the MIT license

This file was generated by verb-cli on July 24, 2014.

Current Tags

  • 0.1.8                                ...           latest (6 years ago)

9 Versions

  • 0.1.8                                ...           6 years ago
  • 0.1.7                                ...           6 years ago
  • 0.1.6                                ...           6 years ago
  • 0.1.5                                ...           6 years ago
  • 0.1.4                                ...           6 years ago
  • 0.1.3                                ...           6 years ago
  • 0.1.2                                ...           6 years ago
  • 0.1.1                                ...           6 years ago
  • 0.1.0                                ...           6 years ago
Maintainers (2)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (4)
Dev Dependencies (6)
Dependents (1)

Copyright 2014 - 2017 © |