Latest version : 1.0.0

 Last updated on 2019-01-03T18:59:58.788Z

 Keywords : compile, data, engine, erb, helper, helpers, lodash, register, render, renderer, template, templates, underscore

 Downloads :

  • 111274 in Last Month

 Links :


See Examples For :


engine NPM version NPM downloads Build Status

Template engine based on Lo-Dash template, but adds features like the ability to register helpers and more easily set data to be used as context in templates.


Install with npm:

$ npm install --save engine


var Engine = require('engine');
var engine = new Engine();

engine.helper('upper', function(str) {
  return str.toUpperCase();

engine.render('<%= upper(name) %>', {name: 'Brian'});
//=> 'BRIAN'



Create an instance of Engine with the given options.


  • options {Object}


var Engine = require('engine');
var engine = new Engine();

// or
var engine = require('engine')();


Register a template helper.


  • prop {String}
  • fn {Function}
  • returns {Object}: Instance of Engine for chaining


engine.helper('upper', function(str) {
  return str.toUpperCase();

engine.render('<%= upper(user) %>', {user: 'doowb'});
//=> 'DOOWB'


Register an object of template helpers.


  • helpers {Object|Array}: Object or array of helper objects.
  • returns {Object}: Instance of Engine for chaining


 upper: function(str) {
   return str.toUpperCase();
 lower: function(str) {
   return str.toLowerCase();

// Or, just require in `template-helpers`


Add data to be passed to templates as context.


  • key {String|Object}: Property key, or an object
  • value {any}: If key is a string, this can be any typeof value
  • returns {Object}: Engine instance, for chaining

Example{first: 'Brian'});
engine.render('<%= last %>, <%= first %>', {last: 'Woodward'});
//=> 'Woodward, Brian'


Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, HTML-escape interpolated data properties in "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data properties may be accessed as free variables in the template. If a setting object is provided it takes precedence over engine.settings values.


  • str {string}: The template string.
  • opts {Object}: The options object.
  • escape {RegExp}: The HTML "escape" delimiter.
  • evaluate {RegExp}: The "evaluate" delimiter.
  • imports {Object}: An object to import into the template as free variables.
  • interpolate {RegExp}: The "interpolate" delimiter.
  • sourceURL {string}: The sourceURL of the template's compiled source.
  • variable {string}: The data object variable name.
  • returns {Function}: Returns the compiled template function.


var fn = engine.compile('Hello, <%= user %>!');
//=> [function]

fn({user: 'doowb'});
//=> 'Hello, doowb!'

fn({user: 'halle'});
//=> 'Hello, halle!'


Renders templates with the given data and returns a string.


  • str {String}
  • data {Object}
  • returns {String}


engine.render('<%= user %>', {user: 'doowb'});
//=> 'doowb'


Related projects

  • assemble: Get the rocks out of your socks! Assemble makes you fast at creating web projects… more | homepage
  • template-helpers: Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or… more | homepage
  • template: Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template… more | homepage
  • verb: Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… more | homepage


Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in

To generate the readme and API documentation with verb:

$ npm install -g verb verb-generate-readme && verb

Running tests

Install dev dependencies:

$ npm install -d && npm test


Jon Schlinkert


Copyright © 2016, Jon Schlinkert. Released under the MIT license.

This file was generated by verb, v0.9.0, on July 19, 2016.