1.3.2 • Published 9 years ago

grunt-mustache-generate v1.3.2

Weekly downloads
2
License
-
Repository
github
Last release
9 years ago

grunt-mustache-generate v1.3.2 Build Status

Grunt task to generate html pages and optionally partials for reuse client side.

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-mustache-generate --save-dev

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

grunt.loadNpmTasks('grunt-mustache-generate');

Settings

There are a number of options available. Please review the minimatch options here. As well as some additional options as follows:

files

Type: String|Array

This defines what file patterns this task will watch. Can be a string or an array of files and/or minimatch patterns.

options.globalData

Type: String

This defines the location of a JSON file containing settings shared across all mustache pages.

options.dontMinify

Type: Boolean

Don't compress pages.

options.partials

Type: Object

This defines the mustache partials if used.

options.partials.src

Type: Array

Base directories containing mustache partials (task recursively searches within these directories).

options.partials.dest

Type: String

If you want to output the partials as a Javascript consumable, set a target filename (without file extension).

options.partials.varName

Type: String

By setting a variable name, the partial output will be saved as a .js file with the varName equal to the template object. (If you don't set this, the partial output will be a .json file)

options.partials.dontMinify

Type: Boolean

Don't compress partials.

options.dataDir

Type: String

Page data is by default looked for in the same directory as the mustache pages. If desired the json can be contained in a separate directory.

options.env

Type: String

If used, the json will be first searched for using the format <page>.<env>.json If no file exists or no environment is set, fall back to <page>.json

options.output

Type: String Default: .html

Set the page output file extension.

options.logLevel

Type: Integer Default: 1

Set the logging levels: 0 = no logging. 1 = log pages. 2 = (and) log partials.

Example Grunt settings

mustacheGenerate: {
  options: {
    globalData: 'site.json',
    partials: {
      src: ['partialDir', 'other_partialDir'],
      dest: 'target/partials',
      varName: 'myNS.partials'
    },
    dataDir: 'data',
    env: grunt.option('env') || process.env.GRUNT_ENV,  
    output: '.html',
    logLevel: 2
  },
  files: {
    expand: 'true',
    cwd: 'pages/',
    src: '**/*.mustache',
    dest: 'target'
  }
}

Data Options

Each data file can pull in external data for itself and for child data files.

Specify the location of the data in a special base level object called "copy". This object contains a reference to each chunk of data, which itself needs to be valid JSON data, either raw in a json file (you don't need to add a file extension), as the value of a javascript variable, or a jsonp response object.

JSON Data

messages.json

{
    "alerts": {
        "global": {
            "header": "Global Message",
            "message": "Global field message"
        },
        "field": {
            "header": "Field Message",
            "message": "Field level message"
        }
    }
}

site.json

{
    "copy": {
        "messages": "messages"
    }
}

pages/index.json

{
    "messages": {
        "alertInfo": true,
        "alertHeader": "`messages.alerts.global.header`",
        "alertMessage": "`messages.alerts.global.message`"
    }
}

JS Variable

messages.js

NS.messages = {
    "alerts": {
        "global": {
            "header": "Global Message",
            "message": "Global field message"
        },
        "field": {
            "header": "Field Message",
            "message": "Field level message"
        }
    }
};

site.json

{
    "copy": {
        "messages": "messages.js"
    }
}

pages/index.json

{
    "messages": {
        "alertInfo": true,
        "alertHeader": "`messages.alerts.global.header`",
        "alertMessage": "`messages.alerts.global.message`"
    }
}

JSONP Response

messages.js

NS.messages({
    "alerts": {
        "global": {
            "header": "Global Message",
            "message": "Global field message"
        },
        "field": {
            "header": "Field Message",
            "message": "Field level message"
        }
    }
});

site.json

{
    "copy": {
        "messages": "messages.js"
    }
}

pages/index.json

{
    "messages": {
        "alertInfo": true,
        "alertHeader": "`messages.alerts.global.header`",
        "alertMessage": "`messages.alerts.global.message`"
    }
}
1.3.2

9 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.7

10 years ago

1.1.6

10 years ago

1.1.5

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago