grunt-templater

Universal template compiler task for Grunt.

grunt-templater

Universal template compiler task for Grunt. It uses Consolidate under the hood.

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.