text: // AdminLTE Gruntfile
  module.exports = function (grunt) {
  
    'use strict';
  
    grunt.initConfig({
      watch: {
        // If any .less file changes in directory "build/less/" run the "less"-task.
        files: ["build/less/*.less", "build/less/skins/*.less", "dist/js/app.js"],
        tasks: ["less", "uglify"]
      },
      // "less"-task configuration
      // This task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css
      less: {
        // Development not compressed
        development: {
          options: {
            // Whether to compress or not
            compress: false
          },
          files: {
            // compilation.css  :  source.less
            "dist/css/AdminLTE.css": "build/less/AdminLTE.less",
            //Non minified skin files
            "dist/css/skins/skin-blue.css": "build/less/skins/skin-blue.less",
            "dist/css/skins/skin-black.css": "build/less/skins/skin-black.less",
            "dist/css/skins/skin-yellow.css": "build/less/skins/skin-yellow.less",
            "dist/css/skins/skin-green.css": "build/less/skins/skin-green.less",
            "dist/css/skins/skin-red.css": "build/less/skins/skin-red.less",
            "dist/css/skins/skin-purple.css": "build/less/skins/skin-purple.less",
            "dist/css/skins/skin-blue-light.css": "build/less/skins/skin-blue-light.less",
            "dist/css/skins/skin-black-light.css": "build/less/skins/skin-black-light.less",
            "dist/css/skins/skin-yellow-light.css": "build/less/skins/skin-yellow-light.less",
            "dist/css/skins/skin-green-light.css": "build/less/skins/skin-green-light.less",
            "dist/css/skins/skin-red-light.css": "build/less/skins/skin-red-light.less",
            "dist/css/skins/skin-purple-light.css": "build/less/skins/skin-purple-light.less",
            "dist/css/skins/_all-skins.css": "build/less/skins/_all-skins.less"
          }
        },
        // Production compresses version
        production: {
          options: {
            // Whether to compress or not
            compress: true
          },
          files: {
            // compilation.css  :  source.less
            "dist/css/AdminLTE.min.css": "build/less/AdminLTE.less",
            // Skins minified
            "dist/css/skins/skin-blue.min.css": "build/less/skins/skin-blue.less",
            "dist/css/skins/skin-black.min.css": "build/less/skins/skin-black.less",
            "dist/css/skins/skin-yellow.min.css": "build/less/skins/skin-yellow.less",
            "dist/css/skins/skin-green.min.css": "build/less/skins/skin-green.less",
            "dist/css/skins/skin-red.min.css": "build/less/skins/skin-red.less",
            "dist/css/skins/skin-purple.min.css": "build/less/skins/skin-purple.less",
            "dist/css/skins/skin-blue-light.min.css": "build/less/skins/skin-blue-light.less",
            "dist/css/skins/skin-black-light.min.css": "build/less/skins/skin-black-light.less",
            "dist/css/skins/skin-yellow-light.min.css": "build/less/skins/skin-yellow-light.less",
            "dist/css/skins/skin-green-light.min.css": "build/less/skins/skin-green-light.less",
            "dist/css/skins/skin-red-light.min.css": "build/less/skins/skin-red-light.less",
            "dist/css/skins/skin-purple-light.min.css": "build/less/skins/skin-purple-light.less",
            "dist/css/skins/all-skins.min.css": "build/less/skins/_all-skins.less"
          }
        }
      },
      // Uglify task info. Compress the js files.
      uglify: {
        options: {
          mangle: true,
          preserveComments: 'some'
        },
        my_target: {
          files: {
            'dist/js/app.min.js': ['dist/js/app.js']
          }
        }
      },
      // Build the documentation files
      includes: {
        build: {
          src: ['*.html'], // Source files
          dest: 'documentation/', // Destination directory
          flatten: true,
          cwd: 'documentation/build',
          options: {
            silent: true,
            includePath: 'documentation/build/include'
          }
        }
      },
  
      // Optimize images
      image: {
        dynamic: {
          files: [{
            expand: true,
            cwd: 'build/img/',
            src: ['**/*.{png,jpg,gif,svg,jpeg}'],
            dest: 'dist/img/'
          }]
        }
      },
  
      // Validate JS code
      jshint: {
        options: {
          jshintrc: '.jshintrc'
        },
        core: {
          src: 'dist/js/app.js'
        },
        demo: {
          src: 'dist/js/demo.js'
        },
        pages: {
          src: 'dist/js/pages/*.js'
        }
      },
  
      // Validate CSS files
      csslint: {
        options: {
          csslintrc: 'build/less/.csslintrc'
        },
        dist: [
          'dist/css/AdminLTE.css',
        ]
      },
  
      // Validate Bootstrap HTML
      bootlint: {
        options: {
          relaxerror: ['W005']
        },
        files: ['pages/**/*.html', '*.html']
      },
  
      // Delete images in build directory
      // After compressing the images in the build/img dir, there is no need
      // for them
      clean: {
        build: ["build/img/*"]
      }
    });
  
    // Load all grunt tasks
  
    // LESS Compiler
    grunt.loadNpmTasks('grunt-contrib-less');
    // Watch File Changes
    grunt.loadNpmTasks('grunt-contrib-watch');
    // Compress JS Files
    grunt.loadNpmTasks('grunt-contrib-uglify');
    // Include Files Within HTML
    grunt.loadNpmTasks('grunt-includes');
    // Optimize images
    grunt.loadNpmTasks('grunt-image');
    // Validate JS code
    grunt.loadNpmTasks('grunt-contrib-jshint');
    // Delete not needed files
    grunt.loadNpmTasks('grunt-contrib-clean');
    // Lint CSS
    grunt.loadNpmTasks('grunt-contrib-csslint');
    // Lint Bootstrap
    grunt.loadNpmTasks('grunt-bootlint');
  
    // Linting task
    grunt.registerTask('lint', ['jshint', 'csslint', 'bootlint']);
  
    // The default task (running "grunt" in console) is "watch"
    grunt.registerTask('default', ['watch']);
  };
  