Universal template compiler task for Grunt. It uses Consolidate under the hood.
- dust (website)
- eco
- ejs
- haml (website)
- haml-coffee (website)
- handlebars (website)
- hogan (website)
- jade (website)
- jazz
- jqtpl (website)
- liquor
- mustache
- QEJS
- swig (website)
- underscore (website)
- walrus (website)
- whiskers
install via npm
npm install grunt-templater
install the template engine you intend to use. For example, if using Jade:
npm install jade
and in your grunt.js file:
grunt.loadNpmTasks('grunt-templater');
Create a template
task in your grunt config. Templater will guess the intended template engine based on the src
filename. Pass the engine
option to force a specific engine.
When using the Grunt file format, variables
is required:
grunt.initConfig({
template: {
all: {
files: [{
expand: true,
cwd: 'source',
src: [ '**/*.hbs' ],
dest: 'build',
ext: '.html'
}],
variables: {
env: environment
}
}
}
});
To remain backwards compatible, src
, dest
can be used to define files aswell:
grunt.initConfig({
template: {
dev: {
src: 'app/homepage.jade',
dest: 'dev.html',
variables: {
css_url: 'app.css'
title: 'Hello World'
pretty: true
}
},
dist: {
src: 'app/homepage.jade',
dest: 'dist/index.html',
variables: {
css_url: 'app.min.css'
title: 'Hello Production'
}
},
dynamicVariables: {
src: 'app/homepage.jade',
dest: 'dist/index.html',
variables: function () {
return {
css: grunt.file.read('app.min.css'),
now: new Date()
}
}
}
},
...
});
run with:
grunt template
or for a specific target:
grunt template:dev
Engine specific options can also be passed through the variables
option. In the case of Jade, pretty: true
adds pretty-indentation whitespace to its output.