« Back to Index

Best way to modular Grunt tasks

View original Gist on GitHub

1. Tree

|— Gruntfile
|— package.json
|— grunt
| – contrib-requirejs.js

2. Gruntfile.js

module.exports = function(grunt) {
    grunt.loadTasks('grunt');
};

3. Grunt Task (contrib-requirejs).js

module.exports = function(grunt) {
    grunt.config('requirejs', {
        compile: {
            options: {
                baseUrl: './app',
                name: 'main',
                out: './app/release/main.js'
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-requirejs');
};

4. Conditionally Load Tasks.js

module.exports = function (grunt) {
    grunt.registerTask('images', [], function() {
        grunt.config('responsive_images', {
            main: { ... }
        });

        grunt.loadNpmTasks('grunt-responsive-images');
        grunt.task.run('responsive_images');
    });
};