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
0.1.2 -- Updated twig to 0.7.0
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');
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.
},
},
});
Type: String
Default value: null
Required. The root path of twig templates. Needed to complete paths for proper include/extend references
Type: String
Default value: .html
The extension of twig templates. Needed to complete paths for proper include/extend references
Type: Object
Default value: { message : "Hello World" }
An object containing all variables to pass to twig templates
grunt.initConfig({
output_twig: {
settings: {
options: {
docroot: 'test/templates/'
},
files: [
{
expand: true,
cwd: 'test/templates/',
src: ['**/*.html','!_**/*', '!**/_*', '!_*'],
dest: 'test/output/',
ext: '.html'
}
]
}
},
});
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'
}
]
}
},
});
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.
(Nothing yet)