| 'use strict'; |
| module.exports = function(grunt) { |
| |
| grunt.initConfig({ |
| pkg: grunt.file.readJSON('package.json'), |
| jshint: { |
| options: { |
| jshintrc: '.jshintrc' |
| }, |
| all: [ |
| 'Gruntfile.js', |
| 'js/*.js', |
| '!js/main.js' |
| ] |
| }, |
| watch: { |
| js: { |
| files: [ |
| '<%= jshint.all %>' |
| ], |
| tasks: ['jshint', 'uglify', 'surround'], |
| options: { |
| livereload: true |
| } |
| }, |
| }, |
| uglify: { |
| dist: { |
| options: { |
| banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */', |
| compress: true, |
| beautify: false, |
| mangle: false |
| }, |
| files: { |
| 'js/main.js': [ |
| 'js/plugins/*.js', |
| 'js/_*.js' |
| ] |
| } |
| } |
| }, |
| surround: { |
| src: 'js/main.js', |
| options: { |
| overwrite: true, |
| prepend: '---\n---', |
| }, |
| }, |
| imagemin: { |
| dist: { |
| options: { |
| optimizationLevel: 7, |
| progressive: true |
| }, |
| files: [{ |
| expand: true, |
| cwd: 'images/', |
| src: '{,*/}*.{png,jpg,jpeg}', |
| dest: 'images/' |
| }] |
| } |
| }, |
| imgcompress: { |
| dist: { |
| options: { |
| optimizationLevel: 7, |
| progressive: true |
| }, |
| files: [{ |
| expand: true, |
| cwd: 'images/', |
| src: '{,*/}*.{png,jpg,jpeg}', |
| dest: 'images/' |
| }] |
| } |
| }, |
| svgmin: { |
| dist: { |
| files: [{ |
| expand: true, |
| cwd: 'images/', |
| src: '{,*/}*.svg', |
| dest: 'images/' |
| }] |
| } |
| }, |
| }); |
| |
| // Load tasks |
| grunt.loadNpmTasks('grunt-contrib-jshint'); |
| grunt.loadNpmTasks('grunt-contrib-watch'); |
| grunt.loadNpmTasks('grunt-contrib-uglify'); |
| grunt.loadNpmTasks('grunt-newer'); |
| grunt.loadNpmTasks('grunt-contrib-imagemin'); |
| grunt.loadNpmTasks('grunt-svgmin'); |
| grunt.loadNpmTasks('grunt-imgcompress'); |
| grunt.loadNpmTasks('grunt-surround'); |
| |
| // Register tasks |
| grunt.registerTask('scripts', ['watch', 'uglify']); |
| grunt.registerTask('images', ['newer:imgcompress', 'newer:svgmin']); |
| }; |