Automatic compilation of your Handlebars templates.
npm install handlebars-precompiler
This is how you might use it in an Express project:
app.configure('development', function(){
hbsPrecompiler = require('handlebars-precompiler');
hbsPrecompiler.watchDir(
__dirname + "/views",
__dirname + "/public/javascripts/templates.js",
['handlebars', 'hbs']
);
});
In this example, we watch for changes to *.handlebars
and *.hbs
files in our views directory.
When changes are made, precompilation is run on all Handlebars templates and exported to a single minified
Javascript file.
On the browser side, you will need to deploy the Handlebars runtime-only release. You could use the full release which includes a compiler, but your site will be faster if you don't.
Client-side versions of the templates will be named and stored in the Handlebars
object according to their file paths,
e.g. Handlebars.templates['users/show']
Compiles all of the Handlebars templates
-
opts
Options (object
)-
opts.min
Whether or not to minify the files (boolean
) -
opts.fileRegex
File regular expression to match (RegExp
) -
opts.templates
Template directories to compile (string[]
) -
opts.output
Output file name (string
) -
opts.amd
Exports amd style (require.js) (boolean
) -
opts.handlebarPath
Path to handlebar.js (only valid for amd-style) (string
) -
opts.partial
Compiling a partial template (boolean
) -
opts.commonjs
Exports CommonJS style, path to Handlebars module (string
)
-
Compiles all of the Handlebars templates in the specified directory and monitors for changes.
Deprecated: This function is deprecated in favor of watch()
, which allows for more options.
-
dir
Directory with Handlebars templates (string
) -
outfile
Output file name (string
) -
extensions
An array of extensions of files (eg['hbs']
) to compile as Handlebars templates (string[]
)
Compiles all of the Handlebars templates in the specified directory and monitors for changes.
-
dir
Directory with Handlebars templates (string
) -
outfile
Output file name (string
) -
opts
Options (object
)-
opts.extensions
An array of extensions of files (eg['hbs']
) to compile as Handlebars templates (takes precedence over fileRegex) (string[]
) -
opts.pollInterval
Interval in milliseconds at which files are polled for changes (default: 500) (number
) -
opts.fileRegex
A regular expression of the files to compile as Handlebars templates (instead of using .extensions) (RegExp
) -
opts.min
Whether or not to minify the files (default: true) (boolean
) -
opts.silent
Silence console output (default: false) (boolean
) -
opts.amd
Exports amd style (require.js) (default: false) (boolean
) -
opts.handlebarPath
Path to handlebar.js (only valid for amd-style) (default: '') (string
) -
opts.partial
Compiling a partial template (default: false) (boolean
) -
opts.commonjs
Exports CommonJS style, path to Handlebars module (default: false) (string
)
-
- Project created by Joel Wietelmann
- Nic Jansma
- Matt Null
- Brandon Paton
- v2.1.1 - Ensure watch v0.12.0 is installed for this fix
- v2.1.0 - Export the templates for commonJS, Fix opts.partial
- v2.0.0 - Upgraded to Handlebars v2.0.0 which is not compatible with v1.x
- v1.0.6 -
pollInterval
was harcoded to 100 - v1.0.5 - Use
watch
module to detect file and tree changes - v1.0.4 - Fixed issue with temp files crashing precompiler