grunt-dust-require

0.1.5 • Public • Published

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:

grunt.loadNpmTasks('grunt-dust-require');

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

amdPrefix

Type: string Default: null

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

Options

relative

Type: boolean Default: false

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

basePath

Type: string Default: false

Exclude this path from templates names.

useBaseName

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

grunt.initConfig
  "dust-require":
    compile:
      files: [
          {
            expand: true
            outputStyle: 'compressed'
            cwd: "exampleFolder"
            src: ['**/*.dust']
            dest: "compiledFolder"
            ext: '.js'
            amdPrefix: "templates/"
            nameTemplate: false
          }
        ]

example.dust

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

example.js

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"
      }).write("</div>");
    }

    function body_1(chk, ctx) {
      return chk.reference(ctx._get(false, ["someOtherVar"]), ctx, "h");
    }
    return body_0;
  })();
  return
});

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

License

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

Bitdeli Badge

Readme

Keywords

none

Package Sidebar

Install

npm i grunt-dust-require

Weekly Downloads

1

Version

0.1.5

License

none

Last publish

Collaborators

  • salazarm