2012-10-19 07:02:45 +08:00
# 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.
## Getting Started
2012-11-14 06:12:23 +08:00
If you haven't used [grunt][] before, be sure to check out the [Getting Started][] guide, as it explains how to create a [gruntfile][Getting Started] as well as install and use grunt plugins. Once you're familiar with that process, install this plugin with this command:
2012-10-19 07:02:45 +08:00
2012-11-14 06:12:23 +08:00
```shell
2012-10-19 07:02:45 +08:00
npm install grunt-contrib-jst --save-dev
```
[grunt]: http://gruntjs.com/
2013-02-06 00:54:29 +08:00
[Getting Started]: http://gruntjs.com/getting-started
2012-10-19 07:02:45 +08:00
2012-11-14 06:12:23 +08:00
## Jst task
_Run this task with the `grunt jst` command._
2012-10-19 07:02:45 +08:00
2012-11-28 22:41:10 +08:00
_This task is a [multi task][] so any targets, files and options should be specified according to the [multi task][] documentation._
[multi task]: https://github.com/gruntjs/grunt/wiki/Configuring-tasks
2012-10-19 07:02:45 +08:00
2013-01-10 06:48:55 +08:00
_Version `0.4.x` of this plugin is compatible with Grunt `0.4.x` . Version `0.3.x` of this plugin is compatible with Grunt `0.3.x` ._
2012-10-19 07:02:45 +08:00
### Options
2013-01-11 05:08:29 +08:00
#### separator
Type: `String`
Default: linefeed + linefeed
Concatenated files will be joined on this string.
2012-11-28 22:41:10 +08:00
#### namespace
2012-10-19 07:02:45 +08:00
Type: `String`
Default: 'JST'
The namespace in which the precompiled templates will be asssigned. *Use dot notation (e.g. App.Templates) for nested namespaces.*
2012-11-28 22:41:10 +08:00
#### processName
2013-01-11 05:08:29 +08:00
Type: `function`
2012-10-19 07:02:45 +08:00
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();
}
}
```
2012-11-28 22:41:10 +08:00
#### templateSettings
2013-01-11 05:08:29 +08:00
Type: `Object`
2012-10-19 07:02:45 +08:00
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"]
}
}
}
```
2012-11-28 22:41:10 +08:00
#### prettify
2013-01-11 05:08:29 +08:00
Type: `boolean`
2012-11-27 02:02:20 +08:00
Default: false
When doing a quick once-over of your compiled template file, it's nice to see
an easy-to-read format that has one line per template. This will accomplish
that.
2013-01-11 05:08:29 +08:00
```js
2012-11-27 02:02:20 +08:00
options: {
prettify: true
}
```
2012-11-28 22:41:10 +08:00
#### amdWrapper
2013-01-11 05:08:29 +08:00
Type: `boolean`
2012-11-27 02:02:20 +08:00
Default: false
With Require.js and a pre-compiled template.js you want the templates to be
wrapped in a define. This will wrap the output in:
2013-01-11 05:08:29 +08:00
```js
2012-11-27 02:02:20 +08:00
define(function() {
//Templates
return this["NAMESPACE"];
});
```
Example:
2013-01-11 05:08:29 +08:00
```js
2012-11-27 02:02:20 +08:00
options: {
amdWrapper: true
}
```
2012-11-28 22:41:10 +08:00
2012-12-29 21:18:21 +08:00
#### processContent
2013-01-11 05:08:29 +08:00
Type: `function`
2012-12-29 21:18:21 +08:00
This option accepts a function which takes one argument (the file content) and
returns a string which will be used as template string.
The example below strips whitespace characters from the beginning and the end of
each line.
2013-01-11 05:08:29 +08:00
```js
2012-12-29 21:18:21 +08:00
options: {
processContent: function(src) {
return src.replace(/(^\s+|\s+$)/gm, '');
}
}
```
2012-11-28 22:41:10 +08:00
### Usage Examples
2012-10-19 07:02:45 +08:00
```js
jst: {
compile: {
options: {
templateSettings: {
interpolate : /\{\{(.+?)\}\}/g
}
},
files: {
"path/to/compiled/templates.js": ["path/to/source/**/*.html"]
}
}
}
```
2012-11-28 22:41:10 +08:00
2012-10-19 07:02:45 +08:00
## Release History
2013-02-06 00:54:29 +08:00
* 2012-01-28 v0.4.1rc7 Correct line endings for lodash output on windows.
2013-01-27 11:57:05 +08:00
* 2013-01-22 v0.4.0rc7 Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.
2013-01-11 05:08:29 +08:00
* 2013-01-08 v0.4.0rc5 Updating to work with grunt v0.4.0rc5. Switching to this.files api.
2013-01-10 06:48:55 +08:00
* 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.
2012-11-14 06:12:23 +08:00
---
2012-10-19 07:02:45 +08:00
2012-11-14 06:12:23 +08:00
Task submitted by [Tim Branyen ](http://tbranyen.com )
2012-10-19 07:02:45 +08:00
2013-02-06 00:54:29 +08:00
*This file was generated on Tue Feb 05 2013 11:54:24.*