Bundlebars

raw JSON →
1.2.0 verified Sat Apr 25 auth: no javascript

Handlebars templates compiler and bundler that compiles static templates with JSON or YAML data and precompiles templates into AMD/Node/ES6/JST wrappers. Version 1.2.0 is the current stable release. Release cadence is low, with no recent updates. Key differentiators include a Promise-based API, CLI with Unix pipe support, and an integrated Grunt task, unlike standalone Handlebars or other precompilers that lack bundling or pipe capabilities. It supports both compilation to HTML and precompilation for SPA delivery.

error Error: Cannot find module 'q'
cause Missing dependency 'q' when using bundlebars in a project that doesn't have it installed.
fix
Run npm install q --save or ensure bundlebars is installed properly (npm install bundlebars).
error TypeError: bundlebars.compile is not a function
cause Incorrect import or require statement. For example, using default import incorrectly in ESM.
fix
Use proper import: import { compile } from 'bundlebars' or const { compile } = require('bundlebars').
error Error: Cannot find module 'js-yaml'
cause js-yaml is an optional dependency, but required when using YAML data files. It may not be installed automatically.
fix
Run npm install js-yaml --save if you need YAML support.
gotcha The compile function expects a template string as first argument and data object as second argument. If you pass a file path, it will treat it as a template string literal, not read the file.
fix Use the CLI or read the file with fs.readFileSync and pass the content string.
deprecated The 'q' promise library is used internally. This is an outdated library; native Promises are recommended for new projects.
fix No immediate fix needed, but consider using a newer library or manually overriding with native promises.
gotcha The CLI option '--options' expects a path to a module that exports an object. If the path is relative, it must be relative to the current working directory, not the module location.
fix Use an absolute path or ensure the relative path is correct from the working directory.
npm install bundlebars
yarn add bundlebars
pnpm add bundlebars

Shows how to use compile and precompile functions with bundlebars. The compile function takes template string and data object, returns a Promise with rendered string. The precompile function takes template string and options object (e.g., wrapper: 'amd'), returns a Promise with precompiled template string.

const bundlebars = require('bundlebars');

// Compile a template with data
const template = 'Hello {{name}}!';
const data = { name: 'World' };
bundlebars.compile(template, data).then(result => {
  console.log(result); // Outputs: Hello World!
}).catch(err => {
  console.error(err);
});

// Precompile a template with AMD wrapper
bundlebars.precompile(template, { wrapper: 'amd' }).then(result => {
  console.log(result); // Precompiled AMD module string
}).catch(err => {
  console.error(err);
});