Broccoli Handlebars
Broccoli plugin for compiling handlebars templates that supports using an existing Handlebars instance, partials, helpers, and asynchronous render context based on the filename.
Install
npm install --save broccoli-handlebars
Example
var Handlebars = require('handlebars');
var broccoliHandlebars = require('broccoli-handlebars');
var helpers = require('./my-helpers-object');
var dataForFile = require('./get-view-data');
var tree = 'site';
var tree = broccoliHandlebars(tree, ['pages/**/*.hbs'], {
helpers: helpers
, handlebars: Handlebars
, partials: 'partials-path'
, context: function (filename) { return dataForFile(filename); };
});
Usage
var hbsTree = broccoliHandlebars(tree, [outputFiles], options);
- tree - a broccoli tree or string of handlebars files to watch (including partials for example)
- outputFiles - an array of filenames or globs that will be compiled
- options - Handlebars options, see below
Options
context (optional)
A function or object used as the render context. The function is passed the filename allowing for dynamic contexts. The function may return a value directly or a promise the resolves to a value.
function RenderContext () {}
RenderContext.prototype.render = function (filename) {
return {
title: filename.toUpperCase()
};
};
var renderContext = new RenderContext();
var tree = broccoliHandlebars(tree, {
context: { title: 'Foo' }
context: renderContext.render.bind(renderContext)
context: function () { return $.getJSON('/data.json'); }
});
helpers (optional)
An object of helpers or a function that returns an object of helpers.
module.exports = {
firstName: function (str) { return str.split(' ')[0]; }
};
handelbars (optional)
A Handlebars instance. Useful if you need to make sure you are using a specific version or have already registerd partials/helpers.
var tree = broccoliHandlebars(tree, {
handlebars: require('handlebars')
});
partials (optional)
A string that is the path to partials.
var tree = broccoliHandlebars(tree, {
partials: 'path/to/partials'
});