Efficiently and quickly compiles all the template files in a directory into an output file using your favorite microtemplating framework.
JavaScript CoffeeScript Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


⌦  Hi, I'm Rex-Template. I'm here to make your life easier. ⌫


Install it in the root of your project, run rex-template -w, and just start building your website. Easy as pie.

No, Seriously. WTF is this?

Rex-Template recursively compiles all of the Handlebars templates in a folder into a single file, watching for changes afterward.

How do I use the templates once they're compiled?

Rex-Template compiles the templates it finds into a namespaced extension of the Handlebars.templates object, without the file extension (.hb,.hbs,.handlebars, etc)

####Take for example:

Folder Structure (> is Folder, - is file)

> BaseProjectFolder
  > protected
  > public
    > images
    > css
    > js
      > libs
      > templates
        - home.hb
        > user
          - avatar.hb
          - settings.hb
        > dashboard
          > graphs
            - tallGraph.hb
            - shortGraph.hb
          > feed
            - entry.hb
          - main.hb
        > navigation
          - bar.hb
          - menuLeft.hb
          - menuRight.hb

Now, simply navigate to the BaseProjectFolder and run rex-template on the command line. You should now have the following templates, ready to use in your code:

  • Handlebars.templates['home']
  • Handlebars.templates['user/avatar']
  • Handlebars.templates['user/settings']
  • Handlebars.templates['dashboard/graphs/tallGraph']
  • Handlebars.templates['dashboard/graphs/shortGraph']
  • Handlebars.templates['dashboard/feed/entry']
  • Handlebars.templates['dashboard/main']
  • Handlebars.templates['navigation/bar']
  • Handlebars.templates['navigation/menuLeft']
  • Handlebars.templates['navigation/menuRight']

How do I use them in my code?

Exactly the way that I listed above. Instead of doing this:

var template = Handlebars.compile( $("#someElement").html() )
$("#anotherElement").html( template({ name : "Blah", age : "BlahBlah" }) )  

You would instead do this:

$("#anotherElement").html( Handlebars.templates['some/template']({ name : "Blah", age : "BlahBlah" }) )  

I'm stuck and need help.

Email me. Pierce Moore me@prex.io

GitHub repo?

Sure do. rex/rex-template

I heard a rumor you do a cool nerdy trick with versions...

Sure do. Run Rex-Template with the -v flag and you will see your version of Rex-Template, Handlebars, Node, and the V8 Engine.

Rex-Template Version Tree:  
  Rex-Template:  [ 1.1.5 ]  
  Handlebars:    [ 1.0.0 ]  
  Node.js:       [ 0.10.9 ]  
  V8 (Engine):   [ ]  

How do I use this thing?


Compiles ./public/js/templates into ./public/js/templates.js.

####rex-template -w

Compiles the folder of templates and and watches the folder for changes.


Compiles the folder of templates and reduces the text logged to the console.

####rex-template -i './other/templates/folder/' -o './js/folder/templates.js' -wq

Changes the input/output paths, reduces console logging, and watches for changes.

Does Rex-Template have awesome Command-Line flags?

Pshh, is that even a question?

Flag What it does Default Value
-h, --help Show usage information [boolean] [default: false]
-i, --in Folder of templates to compile [default: "./public/js/templates"]
-o, --out Compiled output file [default: "./public/js/templates.js"]
-m, --minify Remove extra comments and whitespace [boolean] [default: true]
-w, --watch Monitor the input folder for changes [boolean] [default: false]
-v, --version Display the version tree [boolean]
-q, --quiet Reduce console output [boolean] [default: false]

Have fun, kids!