in helpers/handlebars.js:
var register = function(Handlebars) {
var helpers = {
inc: function(value, options) {
return parseInt(value) + 1;
},
foo: function(var1, var2) {
return ....
}
};
if (Handlebars && typeof Handlebars.registerHelper === "function") {
for (var prop in helpers) {
Handlebars.registerHelper(prop, helpers[prop]);
}
} else {
return helpers;
}
};
module.exports.register = register;
module.exports.helpers = register(null);
in app.js:
var exphbs = require('express-handlebars');
var hbsHelpers = exphbs.create({
helpers: require("./helpers/handlebars.js").helpers,
defaultLayout: 'layout',
extname: '.hbs'
});
app.engine('.hbs', hbsHelpers.engine);
app.set('view engine', '.hbs');
This helped me bridge the gap of passing the handlebars object with the layout back to the engine.