163 lines
5.3 KiB
JavaScript
163 lines
5.3 KiB
JavaScript
|
|
module.exports = function (grunt) {
|
|
// Project configuration.
|
|
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
uglify: {
|
|
options: {
|
|
banner: '/*! <%= pkg.name %> javascript <%= grunt.template.today("yyyy-mm-dd") %> */\n',
|
|
mangle:false
|
|
},
|
|
build: {
|
|
src: 'build/dist/js/<%= pkg.name %>.js',
|
|
dest: 'build/dist/js/<%= pkg.name %>.min.js'
|
|
},
|
|
vendor: {
|
|
src: [
|
|
'./vendor/bower/jquery/dist/jquery.js',
|
|
'./vendor/bower/uikit/dist/js/uikit.js',
|
|
'./vendor/bower/uikit/dist/js/uikit-icons.js',
|
|
'./vendor/bower/select2/dist/js/select2.full.min.js'
|
|
],
|
|
dest: 'build/dist/js/vendor.min.js'
|
|
}
|
|
},
|
|
less: {
|
|
production: {
|
|
options: {
|
|
compress: false,
|
|
syncImport: true,
|
|
plugins: [
|
|
new (require('less-plugin-autoprefix'))({browsers: ["last 2 versions"]})
|
|
],
|
|
paths: [
|
|
'vendor/bower/uikit/src/less',
|
|
'vendor/bower/uikit/src/less/theme',
|
|
'vendor/bower/uikit/src/less/components'
|
|
]
|
|
},
|
|
files: {
|
|
'build/dist/css/<%= pkg.name %>.css': [
|
|
'./build/less/doughnut.less',
|
|
]
|
|
}
|
|
}
|
|
},
|
|
cssmin: {
|
|
production: {
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'build/dist/css',
|
|
src: ['*.css', '!*.min.css'],
|
|
dest: 'build/dist/css',
|
|
ext: '.min.css'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: 'build/css',
|
|
src: ['*.css', '!*.min.css'],
|
|
dest: 'build/dist/css',
|
|
ext: '.min.css'
|
|
}]
|
|
}
|
|
},
|
|
jshint: {
|
|
dev: ['Gruntfile.js', 'build/js/doughnut.js'],
|
|
options: {
|
|
// options here to override JSHint defaults
|
|
reporter: require('jshint-stylish'),
|
|
globals: {
|
|
jQuery: true,
|
|
console: true,
|
|
module: true,
|
|
document: true
|
|
}
|
|
}
|
|
},
|
|
concat: {
|
|
dist: {
|
|
src: [
|
|
'build/js/doughnut.js'
|
|
],
|
|
dest: 'build/dist/js/<%= pkg.name %>.js'
|
|
}
|
|
},
|
|
copy: {
|
|
main: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: 'build/dist/js',
|
|
src: ['*.min.js'],
|
|
dest: 'web/js',
|
|
filter: 'isFile'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: 'build/dist/css',
|
|
src: ['*.min.css'],
|
|
dest: 'web/css',
|
|
filter: 'isFile'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: './vendor/bower/uikit/dist/images',
|
|
src: ['**'],
|
|
dest: 'web/images'
|
|
},
|
|
{
|
|
expand:true,
|
|
cwd: './vendor/bower/select2/dist/css',
|
|
src: ['select2.min.css'],
|
|
dest: 'web/css'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: 'build/images',
|
|
src: ['*'],
|
|
dest: 'web/images'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
watch: {
|
|
configFiles: {
|
|
files: ['Gruntfile.js', 'config/*.js'],
|
|
options: {
|
|
reload: true
|
|
}
|
|
},
|
|
less: {
|
|
files: 'build/less/*.less',
|
|
tasks: ['less', 'cssmin', 'copy']
|
|
},
|
|
js: {
|
|
files: 'build/js/doughnut.js',
|
|
tasks: ['concat:dist', 'jshint', 'uglify:build', 'copy']
|
|
}
|
|
},
|
|
clean: [
|
|
'build/dist',
|
|
'web/js/*.js',
|
|
'web/css/*.css',
|
|
'web/images/*'
|
|
]
|
|
});
|
|
|
|
// Load the plugin that provides the "uglify" task.
|
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
grunt.loadNpmTasks('grunt-contrib-jshint');
|
|
grunt.loadNpmTasks('grunt-contrib-less');
|
|
grunt.loadNpmTasks('grunt-contrib-concat');
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
|
// Default task(s).
|
|
grunt.registerTask('build', ['clean', 'concat', 'jshint', 'uglify', 'less', 'cssmin']);
|
|
grunt.registerTask('install', ['copy']);
|
|
grunt.registerTask('default', ['build', 'copy']);
|
|
|
|
|
|
}; |