Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including hbs-cli with all npm packages installed. Try it out:

var hbsCli = require("hbs-cli")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

hbs-cli v1.4.0

A CLI tool for rendering Handlebars templates

hbs-cli

This is a tool to render handlebars templates, with the ability to require in Partials, Helpers and JSON Data.

Usage:
  hbs --version
  hbs --help
  hbs [-P <partial>]... [-H <helper>]... [-D <data>]... [-o <directory>] [--] (<template...>)

  -h, --help                 output usage information
  -v, --version              output the version number
  -o, --output <directory>   Directory to output rendered templates, defaults to cwd
  -e, --extension            Output extension of generated files, defaults to html
  -s, --stdout               Output to standard output
  -i, --stdin                Receive data directly from stdin
  -P, --partial <glob>...    Register a partial (use as many of these as you want)
  -H, --helper <glob>...     Register a helper (use as many of these as you want)

  -D, --data <glob|json>...  Parse some data

Examples:

hbs --helper handlebars-layouts --partial ./templates/layout.hbs -- ./index.hbs
hbs --data ./package.json --data ./extra.json ./homepage.hbs --output ./site/
hbs --helper ./helpers/* --partial ./partials/* ./index.hbs # Supports globs!

* Yarn and NPM expand globs, so if you're using this in an NPM script make sure you wrap globs in quotes. For example:

hbs index.hbs --partial 'partials/*.hbs'

Using Helpers

In order to use Handlebar helpers you can simply create a folder with all your helpers in a js file each. These modules must export a register function which gets the Handlebars instance passed through its first parameter.

// src/template_helper/times.js
var times = function () {};

times.register = function (Handlebars) {
    Handlebars.registerHelper('times', function(n, block) {
        var accum = '';
        for(var i = 0; i < n; ++i)
            accum += block.fn(i);
        return accum;
    });
};

module.exports = times;

Now you are able to use the times function within your Handlebars template such as this:

{{#times 10}}
  <span>{{this}}</span>
{{/times}}

To compile this template you may run this command:

hbs --helper ./src/template_helper/**/*.js --data src/data.json src/templates/**/*.hbs --output dist/
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free