shannonmoeller / gulp-hb

A sane Gulp plugin to compile Handlebars templates. Useful as a static site generator.

Home Page:http://npm.im/gulp-hb

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Expose Handlebars

spacedawwwg opened this issue · comments

Would it be possible to expose Handlebars gulp-hb is using? Making it possible to register helpers .etc without the need to pass a full path the 'node_module' directory

e.g

var gulphb = require('gulp-hb');
var handlebars = gulphb.handlebars;
var layouts = require('handlebars-layouts);

handlebars.registerHelper(layouts(handlebars));

gulp.task('markup', function () {
  gulp.src('pages/*.hbs')
    .pipe(plugins.hb({
        data: 'data/**/*.{json,yml}',
        partials: 'templates/**/*.hbs'
    }))
    .pipe(plugins.extname())
    .pipe(gulp.dest('dist'));
});

Released as v2.4.3.

var hb = require('gulp-hb');

console.log(hb.handlebars);

While I was happy to make this change, I usually defer complicated data collection and helper/partial registration to separate files to keep my gulpfiles clean:

// gulpfile.js
...
    .pipe(hb({
        data: './data/**/*.js',
        helpers: './helpers/**/*.js',
        partials: './partials/**/*.js',
    })
...
// data/site.js
var navTree = {};

// generate tree

module.exports = {
    navTree: navTree
};
// helpers/advanced.js
module.exports.register = function (handlebars) {
    // complicated stuff here
};

That sort of thing.

I get you.

I think that is how I will register custom helpers (e.g {{#either}} ).

Though, for helper such as your 'handlebars-layouts', I like to manage them through devDependencies.

Thanks again, @shannonmoeller - You have been a saviour this week!

Totally. I'm personally okay with globbing into node_modules, but if I change my mind on that, I'd probably do this:

// helpers/vendor.js
var layouts = require('handlebars-layouts');
var markdown = require('helper-markdown');

module.exports.register = function (handlebars) {
    handlebars.registerHelper(layouts(handlebars));
    handlebars.registerHelper('markdown', markdown);
};

Glad that gulp-hb has been useful. I really like the direction they're taking Assemble, but they've got some kinks to work out. :)