Add grunt@0.4 functionality to grunt@0.3 plugins
Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-retro
Then inside your grunt plugin or grunt.js (depending on the scope of your intent), load and bind grunt-retro
to grunt
:
// Inside of grunt plugin (MUST BE DONE IMMEDIATELY AFTER module.exports)
module.exports = function (grunt) {
grunt = require('grunt-retro')(grunt);
// Continue with normal actions
};
grunt-retro
takes care of the gotchas between grunt@0.3
and grunt@0.4
. Below is a list of what we guarantee to work:
- Define
this.file
to match the0.3
specification;{src, file}
- Fallback
this.utils
to be an object ofgrunt
utilites - Allow for
registerTask
to alias multiple tasks via single string
grunt.registerTask('multi-task', 'lint clean test');
- Add back
grunt.helper
andgrunt.registerHelper
system
- Plugins will receive the same
array
ornon-array
input fromthis.file.src
- In
0.4
, this is normalized to always be anarray
.
- In
- Fallback
grunt.file.glob.minimatch
module.exports = function (grunt) {
// Bind retro functionality
grunt = require('grunt-retro')(grunt);
// Create and register our task
grunt.registerTask('rot13', 'Rotate a file by 13', function () {
// Grab file locations -- normally, we would expandFiles(src)
var file = this.file,
src = file.src,
dest = file.dest;
// Rotate content
var input = grunt.file.read(src),
output = grunt.helper('rot13', input);
// Write out content
grunt.file.write(dest, output);
});
// Register a helper for performing rot13
grunt.registerHelper('rot13', rot13Fn);
};
module.exports = function (grunt) {
// Bind retro functionality
grunt = require('grunt-retro')(grunt);
// Set up config
grunt.initConfig({...});
// Register default task
grunt.registerTask('default', 'lint test');
};
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint your code using grunt and test via npm test
.
Copyright (c) 2013 Todd Wolfson Licensed under the MIT license.