node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


Grunt.js plugin to compile dustjs templates and wrap them in requirejs modules with all partial templates used as dependencies.

Getting Started

This plugin requires Grunt ~0.4.0

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-dust-require --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:


Dust task

Run this task with the grunt grunt-dust-require command.

Task targets, files and options may be specified according to the grunt Configuring tasks guide.

File Options


Type: string Default: null

Sets a prefix for the requirejs module name. amdPrefix/path/to/template.



Type: boolean Default: false

Make templates names relative from cwd (working only if used Grunt Dynamic Mappings).


Type: string Default: false

Exclude this path from templates names.


Type: boolean Default: false

If 'true' template names will be the same as the basename of the file, sans prepended paths and file extensions. When coupled with globbing pattern '[root_folder]/**/*' all files matched will use their base names regardless of where the file is located in the directory tree rooted at root_folder. Note: One caveat - filenames must be unique! Otherwise name collisions will occur.

Usage Examples

      files: [
            expand: true
            outputStyle: 'compressed'
            cwd: "exampleFolder"
            src: ['**/*.dust']
            dest: "compiledFolder"
            ext: '.js'
            amdPrefix: "templates/"
            nameTemplate: false


<div class='example'>
  {> "path/to/partial/template" someVar="{someOtherVar}" /}
  {> "path/to/another/partial" /}
  {> "another/path/omg" anotherVar="someValue" /}


define("templates/example", ["templates/path/to/partial/template", "templates/path/to/another/partial", "templates/another/path/omg"], function() {
  // example.dust 
  (function() {
    dust.register("example", body_0);
    function body_0(chk, ctx) {
      return chk.write("<div class='example'>").partial("path/to/partial/template", ctx, {
        "someVar": body_1
      }).partial("path/to/another/partial", ctx, null).partial("another/path/omg", ctx, {
        "anotherVar": "someValue"
    function body_1(chk, ctx) {
      return chk.reference(ctx._get(false, ["someOtherVar"]), ctx, "h");
    return body_0;

For more examples on how to use the expand API to manipulate the default dynamic path construction in the glob_to_multiple examples, see "Building the files object dynamically" in the grunt wiki entry Configuring Tasks.

Release History

  • v0.1.0
    • First release


Copyright (c) 2013 Marco Salazar Licensed under the MIT license.

Bitdeli Badge