.verb.md
March 19, 2018 ยท View on GitHub
Usage
const renderLayouts = require('{%= name %}');
renderLayouts(file, layoutCollection, options);
file- a file object (or [vinyl] file) with afile.contentsproperty that must be a bufferlayoutCollection- an object of file objects to use as layoutsoptions- see available options
Heads up!
This library does not clone the file object. If you want to prevent file.contents from being mutated (after rendering layouts), clone the file first before passing it to this library.
Example
const renderLayouts = require('{%= name %}');
const file = {
contents: Buffer.from('<div>Wrap me with a layout!!!</div>'),
layout: 'one'
};
const layoutCollection = {
one: { contents: Buffer.from('one before\n{%% body %}\none after'), layout: 'two' },
two: { contents: Buffer.from('two before\n{%% body %}\ntwo after') }
};
const res = renderLayouts(file, layoutCollection);
console.log(res.contents.toString());
// two before
// one before
// <div>Wrap me with a layout!!!</div>
// one after
// two after
Options
options.disableHistory
Type: boolean
Default: undefined
By default, layouts are prevented from being applied multiple times to the same string. Disable this by setting disableHistory to true.
Example
layouts(file, layoutCollection, { disableHistory: true });
options.layoutDelims
Custom delimiters to use for injecting contents into layouts.
Type: regex
Default: /{%% (body) %}/g
options.preserveWhitespace
Preserve leading whitespace when injecting a string into a layout.
Type: boolean
Default: undefined
API
{%= apidocs("index.js") %}
History
1.0.0
Breaking changes
- renames
layoutHistorytolayoutStack - layouts in
layoutStackare now the actual layout object, instead of the layout name
Added
- Adds support for a function as the last argument. If passed, the function is called on the file and each layout with this signature:
fn(file, layout).
0.13.0
Breaking changes
- The main
layouts()function now expects afileobject as the first argument. This can be an object withpath,layoutandcontentsproperties, or a valid [vinyl][] file. See the API docs for more details.
0.12.0
Breaking changes
- change
options.tagtooptions.contentTag
Housekeeping
- update tests to use
assertinstead ofshould
0.11.0
- All view objects must now have a
pathproperty, following [vinyl][] conventions.