Grunt based build system


GruntJS based build system for frontend web projects.

  • Write your code using CoffeeScript and have it compile into CommonJS modules (this allows you to easily share code between browser and node)
  • Style your web application using SASS (built-in support for Compass, Twitter bootstrap and Font Awesome)
  • Use Jade for all of your templates (static pages compile to html, and dynamic templates compile to javascript)
  • Write a multi-lingual application using I18n-js
  • Automatically live reload your browser when files are changed
  • Use third-party packages using bower
  • Test your code using mocha, chai, sinon and more.
  pages/ - static pages (jade -> html)
    index.jade - compiled to index.html
    _layout.jade - files starting with _ are ignored, useful for layouts and partials
    index.jade - compiled to JS code and accessable via JST["index"]
  test.jade - test runner template
  * - test files
build/ - production output
public/ - development output
  app.js - a combined version for vendor.js, templates.js, i18n/en.js and app.js
  • Add tusk to your package.json:
  "dependencies": {
    "grunt": "~0.4.0",
    "grunt-tusk": "~0.0.1"
  • Add the following to your
module.exports = (grunt) ->
  tusk = require 'grunt-tusk'
  tusk.initialize grunt,
      vendor: [
      test_vendor: [
    copy: [
      { source: 'components/bootstrap-sass/img'dest: 'images' }
      { source: 'components/font-awesome/font'dest: 'fonts' }
  • Add the following packages to bower's component.json file:
  "dependencies": {
    "bootstrap-sass": "2.2.2",
    "mocha": "1.8.1",
    "chai": "1.4.2",
    "sinon.js": "*",
    "sinon-chai": "git://",
    "font-awesome": "3.0.2",
    "underscore": "1.4.4",
    "backbone": "0.9.10",
    "marionette": "1.0.0-rc5",
    "i18n-js": "git://"

See grunt-tusk-template for a basic template to get start faster.