Skip to content

Latest commit

 

History

History
128 lines (104 loc) · 3.44 KB

README.md

File metadata and controls

128 lines (104 loc) · 3.44 KB

grunt-output-twig

A Grunt version of npm twig. Allows for twig template to be compiled through grunt. The CRAFT CMS (http://buildwithcraft.com) was used for sample templates (and the whole reason I tried to do this in the first place). Not all TWIG capabilities are present, per the npm twig project. Notes on limitations are available here: https://github.com/justjohn/twig.js/wiki/Implementation-Notes

Changelog

0.1.2 -- Updated twig to 0.7.0

Getting Started

This plugin requires Grunt ~0.4.1

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-output-twig --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-output-twig');

The "output_twig" task

Overview

In your project's Gruntfile, add a section named output_twig to the data object passed into grunt.initConfig().

grunt.initConfig({
  output_twig: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
});

Options

options.docroot

Type: String Default value: null

Required. The root path of twig templates. Needed to complete paths for proper include/extend references

options.tmpext

Type: String Default value: .html

The extension of twig templates. Needed to complete paths for proper include/extend references

options.context

Type: Object Default value: { message : "Hello World" }

An object containing all variables to pass to twig templates

Usage Examples

Default Options

grunt.initConfig({
  output_twig: {
    settings: {
      options: {
        docroot: 'test/templates/'
      },
      files: [
        {
          expand: true,
          cwd: 'test/templates/',
          src: ['**/*.html','!_**/*', '!**/_*', '!_*'],
          dest: 'test/output/',
          ext: '.html'
        }
      ]
    }
  },
});

Custom Options

In this example, custom options are used to return more advanced template variables as thier argument - allowing for rendering of more integrated templates.

grunt.initConfig({
  output_twig: {
    settings: {
      options: {
        docroot: 'test/templates/',
        tmpext: '.html',
        context: {
          url: function(input){ return input; },
          forms: {
            errorList: function(input){ return input; }
          },
          account: {
            email: 'email',
            username: 'user',
            getErrors: function(input){ return input; }
          },
          group: function(input){ return input; },
          slice: function(input){ return input; }
        }
      },
      files: [
        {
          expand: true,
          cwd: 'test/templates/',
          src: ['**/*.html','!_**/*', '!**/_*', '!_*'],
          dest: 'test/output/',
          ext: '.html'
        }
      ]
    }
  },
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)