// 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']); };