grunt-mustache-combine
Version:
Combine Mustache templates.
117 lines (86 loc) • 2.52 kB
Markdown
# grunt-mustache-combine [](https://travis-ci.org/vicompany/grunt-mustache-combine)
> Combine Mustache templates into one file.
## Getting Started
This plugin will combine all your Mustache templates into one file (`object`) and use the path of the file as the key. It won't pre-parse the file, because Mustache will [do that on the first render](https://github.com/janl/mustache.js#pre-parsing-and-caching-templates).
## Install
```
$ npm install --save-dev grunt-mustache-combine
```
## Usage
```js
require('load-grunt-tasks')(grunt); // npm install --save-dev load-grunt-tasks
grunt.initConfig({
mustache_combine: {
all: {
files: 'js/templates.js': ['templates/**/*.mustache']
}
}
});
grunt.registerTask('default', ['mustache_combine']);
```
## Examples
### Custom config and rules
```js
grunt.initConfig({
mustache_combine: {
options: {
format: 'amd',
extension: '.html',
removeFromKey: 'path/to/'
},
all: {
files: 'dist/templates.js': ['path/to/templates/**/*.html']
}
}
});
```
## Options
### options.format
Type: `String`
Default: `'es6'`
Other possible values: `'commonjs', 'amd', 'es5'`
The format to output.
### options.extension
Type: `String`
Default: `'.mustache'`
The extension to remove from the key.
### options.removeFromKey
Type: `String`
Default: `''`
Part of the file path to remove from the key.
### options.useLowerCaseKey
Type: `Boolean`
Default: `true`
Generate lower case keys. Set to `false` to ignore casing.
### options.formatKey
Type: `Function`
Default: `null`
Function to generate a custom key. It overrules the `removeFromKey` and `useLowerCaseKey` options and receives the file path as a parameter.
```js
grunt.initConfig({
mustache_combine: {
options: {
formatKey: function(filepath) {
return filepath
.replace('path/to/templates/', 'tpl-')
.toUpperCase();
}
},
all: {
files: 'js/template.js': ['path/to/templates/**/*.mustache']
}
}
});
```
## Output example and usage
```js
// Contents of the generated templates file (default ES6 format)
export default {"my/template": "<h1>hello {{name}}</h1>"};
// In your module.js
import Mustache from 'mustache';
import templates from './templates';
const tpl = templates['my/template'];
Mustache.render(tpl, {name: 'World'});
```
## License
MIT © [VI Company](http://vicompany.nl)