|
7 | 7 | */ |
8 | 8 |
|
9 | 9 | 'use strict'; |
| 10 | +var path = require('path'); |
| 11 | +var CleanCSS = require('clean-css'); |
| 12 | +var chalk = require('chalk'); |
| 13 | +var maxmin = require('maxmin'); |
10 | 14 |
|
11 | 15 | module.exports = function(grunt) { |
12 | | - var path = require('path'); |
13 | | - var CleanCSS = require('clean-css'); |
14 | | - var chalk = require('chalk'); |
15 | | - var maxmin = require('maxmin'); |
| 16 | + var minify = function(source, options) { |
| 17 | + try { |
| 18 | + return new CleanCSS(options).minify(source); |
| 19 | + } catch (err) { |
| 20 | + grunt.log.error(err); |
| 21 | + grunt.fail.warn('CSS minification failed.'); |
| 22 | + } |
| 23 | + }; |
16 | 24 |
|
17 | | - grunt.registerMultiTask('cssmin', 'Minify CSS files', function() { |
| 25 | + grunt.registerMultiTask('cssmin', 'Minify CSS', function() { |
18 | 26 | var options = this.options({ |
19 | 27 | report: 'min' |
20 | 28 | }); |
21 | | - this.files.forEach(function(f) { |
22 | | - var valid = f.src.filter(function(filepath) { |
| 29 | + |
| 30 | + this.files.forEach(function(file) { |
| 31 | + var valid = file.src.filter(function(filepath) { |
23 | 32 | // Warn on and remove invalid source files (if nonull was set). |
24 | 33 | if (!grunt.file.exists(filepath)) { |
25 | | - grunt.log.warn('Source file "' + filepath + '" not found.'); |
| 34 | + grunt.log.warn('Source file ' + chalk.cyan(filepath) + ' not found.'); |
26 | 35 | return false; |
27 | 36 | } else { |
28 | 37 | return true; |
29 | 38 | } |
30 | 39 | }); |
31 | 40 |
|
32 | 41 | var max = ''; |
33 | | - var min = valid.map(function(f) { |
34 | | - var src = grunt.file.read(f); |
| 42 | + var min = valid.map(function(file) { |
| 43 | + var src = grunt.file.read(file); |
35 | 44 | max += src; |
36 | | - options.relativeTo = path.dirname(f); |
37 | | - return minifyCSS(src, options); |
| 45 | + options.relativeTo = path.dirname(file); |
| 46 | + return minify(src, options); |
38 | 47 | }).join(''); |
39 | 48 |
|
40 | | - if (min.length < 1) { |
41 | | - grunt.log.warn('Destination not written because minified CSS was empty.'); |
42 | | - } else { |
43 | | - if (options.banner) { |
44 | | - min = options.banner + grunt.util.linefeed + min; |
45 | | - } |
| 49 | + if (min.length === 0) { |
| 50 | + return grunt.log.warn('Destination not written because minified CSS was empty.'); |
| 51 | + } |
46 | 52 |
|
47 | | - grunt.file.write(f.dest, min); |
48 | | - grunt.log.writeln('File ' + chalk.cyan(f.dest) + ' created: ' + maxmin(max, min, options.report === 'gzip')); |
| 53 | + if (options.banner) { |
| 54 | + min = options.banner + grunt.util.linefeed + min; |
49 | 55 | } |
| 56 | + |
| 57 | + grunt.file.write(file.dest, min); |
| 58 | + |
| 59 | + grunt.log.writeln('File ' + chalk.cyan(file.dest) + ' created: ' + maxmin(max, min, options.report === 'gzip')); |
50 | 60 | }); |
51 | 61 | }); |
52 | | - |
53 | | - var minifyCSS = function(source, options) { |
54 | | - try { |
55 | | - return new CleanCSS(options).minify(source); |
56 | | - } catch (e) { |
57 | | - grunt.log.error(e); |
58 | | - grunt.fail.warn('CSS minification failed.'); |
59 | | - } |
60 | | - }; |
61 | 62 | }; |
0 commit comments