# grunt-contrib-jst [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-jst.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-jst) > Precompile Underscore templates to JST file. _Note that this plugin has not yet been released, and only works with the latest bleeding-edge, in-development version of grunt. See the [When will I be able to use in-development feature 'X'?](https://github.com/gruntjs/grunt/blob/devel/docs/faq.md#when-will-i-be-able-to-use-in-development-feature-x) FAQ entry for more information._ ## Getting Started _If you haven't used [grunt][] before, be sure to check out the [Getting Started][] guide._ From the same directory as your project's [Gruntfile][Getting Started] and [package.json][], install this plugin with the following command: ```bash npm install grunt-contrib-jst --save-dev ``` Once that's done, add this line to your project's Gruntfile: ```js grunt.loadNpmTasks('grunt-contrib-jst'); ``` If the plugin has been installed correctly, running `grunt --help` at the command line should list the newly-installed plugin's task or tasks. In addition, the plugin should be listed in package.json as a `devDependency`, which ensures that it will be installed whenever the `npm install` command is run. [grunt]: http://gruntjs.com/ [Getting Started]: https://github.com/gruntjs/grunt/blob/devel/docs/getting_started.md [package.json]: https://npmjs.org/doc/json.html ## The jst task ### Overview In your project's Gruntfile, add a section named `jst` to the data object passed into `grunt.initConfig()`. ```js grunt.initConfig({ jst: { options: { // Task-specific options go here. }, your_target: { // Target-specific file lists and/or options go here. }, }, }) ``` ### Options #### files Type: `Object` 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](https://github.com/gruntjs/grunt/blob/master/docs/api_template.md)) and the value (source) should be a filepath or an array of filepaths (supports [minimatch](https://github.com/isaacs/minimatch)). Note: Values are precompiled to the namespaced JST array in the order passed. #### options.namespace Type: `String` Default: 'JST' The namespace in which the precompiled templates will be asssigned. *Use dot notation (e.g. App.Templates) for nested namespaces.* #### options.processName Type: ```function``` Default: null This option accepts a function which takes one argument (the 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. ```js options: { processName: function(filename) { return filename.toUpperCase(); } } ``` #### options.templateSettings Type: ```Object``` Default: null The settings passed to underscore when compiling templates. ```js jst: { compile: { options: { templateSettings: { interpolate : /\{\{(.+?)\}\}/g } }, files: { "path/to/compiled/templates.js": ["path/to/source/**/*.html"] } } } ``` ### Examples ```js jst: { compile: { options: { templateSettings: { interpolate : /\{\{(.+?)\}\}/g } }, files: { "path/to/compiled/templates.js": ["path/to/source/**/*.html"] } } } ``` ## Release History * 2012-10-11 - v0.3.1 - Rename grunt-contrib-lib dep to grunt-lib-contrib. * 2012-08-22 - v0.3.0 - Options no longer accepted from global config key. * 2012-08-15 - v0.2.3 - Support for nested namespaces. * 2012-08-11 - v0.2.2 - Added processName functionality & escaping single quotes in filenames. * 2012-08-09 - v0.2.0 - Refactored from grunt-contrib into individual repo. -- Task submitted by Tim Branyen. *Generated on Thu Oct 18 2012 18:02:35.*