|
|
|
/*!
|
|
|
|
* Bootstrap's Gruntfile
|
|
|
|
* http://getbootstrap.com
|
|
|
|
* Copyright 2013-2015 Twitter, Inc.
|
|
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
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: {
|
|
|
|
files: ['pages/**/*.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']);
|
|
|
|
};
|