1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
module.exports = function (grunt) {
'use strict';
var compressor = require('node-minify'),
_ = require('underscore');
/**
* Helper function used to create config object for compressor.
*
* @param {Object} options - Options object for a current task.
* @param {Object} file - File object with 'sorce' and 'destination' properties.
* @return {Object} Config object for compressor.
*/
function getConfig(options, file) {
return _.extend({
input: file.src,
output: file.dest
}, options);
}
grunt.registerMultiTask('mage-minify', 'Minify files with a various compressor engines', function () {
var done = this.async(),
files = this.files,
total = files.length,
options = this.options();
this.files.forEach(function (file, i) {
var config = getConfig(options, file);
/**
* Callback function.
*/
config.callback = function (err) {
if (err) {
console.log(err);
done(false);
} else if (i === total - 1) {
done();
}
};
compressor.minify(config);
});
});
};