module.exports = function(grunt) {
    'use strict';

    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-processhtml');
    grunt.loadNpmTasks('grunt-contrib-htmlmin');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-karma');

    grunt.initConfig({

        jshint: {
            files: [
                'Gruntfile.js',
                'src/scripts/**/*.js',
                'demo/**/*.js'
            ],
            options: {
                jshintrc: '.jshintrc'
            }
        },

        clean: {
            dist: ['dist']
        },

        cssmin: {
            build: {
                files: {
                    'dist/feedback.min.css': 'src/styles/feedback.css'
                }
            },

            demo: {
                files: {
                    '_gh-pages/demo.min.css': [
                        'src/styles/feedback.css',
                        'demo/demo.css'
                    ]
                }
            }
        },

        processhtml: {
            build: {
                files: {
                    '_gh-pages/index.html': 'demo/index.html'
                }
            }
        },

        htmlmin: {
            options: {
                removeComments: true,
                collapseWhitespace: true
            },
            index: {
                files: {
                    '_gh-pages/index.html': '_gh-pages/index.html'
                }
            }
        },

        uglify: {
            build: {
                files: {
                    'dist/feedback.min.js': 'src/**/*.js'
                }
            },
            demo: {
                files: {
                    '_gh-pages/demo.min.js': [
                        'bower_components/angular/angular.js',
                        'src/scripts/feedback.js',
                        'demo/demo.js'
                    ]
                }
            }
        },

        karma: {
            unit:  { configFile: 'karma.conf.js', keepalive: true }
        },

        watch: {
            scripts: {
                files: ['src/**/*', 'demo/**/*'],
                tasks: ['build']
            }
        }

    });

    /* Build process...

    - Lint JS
    - Clean old build
    - Process styles
    - Process scripts
    - Process demo */

    grunt.registerTask('build', [
        'jshint',
        'karma',
        'clean',
        'cssmin:build',
        'uglify:build',
        'demo'
    ]);

    grunt.registerTask('demo', [
        'processhtml',
        'htmlmin',
        'cssmin:demo',
        'uglify:demo'
    ]);


    grunt.registerTask('default', ['jshint', 'karma']);
    grunt.registerTask('dev', ['build', 'watch']);

};

@@ -417,16 +417,65 @@
 karma');
+%0A    grunt.loadNpmTasks('grunt-karma-coveralls');
 %0A%0A    gr
@@ -2233,32 +2233,271 @@
 e %7D%0A        %7D,%0A%0A
+        coveralls: %7B%0A            options: %7B%0A                debug: true,%0A                coverageDir: 'coverage/lcov/',%0A                dryRun: false,%0A                force: true,%0A                recursive: false%0A            %7D%0A        %7D,%0A%0A
         watch: %7B

Add coveralls task in grunt