Precompile Handlebars templates for Ember.js.
Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-ember-templates
Then add this line to your project's grunt.js
gruntfile:
grunt.loadNpmTasks('grunt-ember-templates');
Inside your grunt.js
file, add a section named ember_templates
. This section specifies the files to compile and the options used with handlebars.
This defines what files this task will process and should contain key:value pairs.
The key (destination) should be an unique filepath (supports grunt.template) and the value (source) should be a filepath or an array of filepaths (supports minimatch).
Note: Values are precompiled to the Ember.TEMPLATES
array in the order passed.
This controls how this task operates and should contain key:value pairs, see options below.
This option accepts a function which takes one argument (the source template filepath) and returns a string which will be used as the key for the precompiled template object. The example below stores all templates on the default JST namespace in capital letters.
options: {
templateName: function(sourceFile) {
return sourceFile.replace(/path\/to\/templates\//, '');
}
}
ember_templates: {
compile: {
options: {
templateName: function(sourceFile) {
return sourceFile.replace(/path\/to\//, '');
}
},
files: {
"path/to/result.js": "path/to/source.handlebars",
"path/to/another.js": ["path/to/sources/*.handlebars", "path/to/more/*.handlebars"]
}
}
}
Here's an example task that watches for changes to your templates and automatically recompiles them:
watch: {
ember_templates: {
files: 'app/scripts/**/*.handlebars',
tasks: 'ember_templates reload'
},
}
Many thanks to the following projects upon which this was based:
I created this project as an alternative to grunt-ember-handlebars for the following reasons:
- to provide maximum compatibility with the grunt-contrib project, using features such as destination:source file arguments
- to allow for customizable template names based upon source file paths
- 2012/10/11 - v0.2.0 - Renamed grunt-ember-templates from grunt-contrib-ember.
- 2012/09/28 - v0.1.0 - Initial release.