Imagemin.prototype.optimize = function (cb) { if (!cb || !isFunction(cb)) { cb = function () {}; } if (!fs.existsSync(path.dirname(this.dest))) { mkdir.sync(path.dirname(this.dest)); } if (this.opts.cache && cache.check(this.src, { name: 'imagemin' })) { cache.get(this.src, this.dest, { name: 'imagemin' }); return cb(null, this._process()); } if (!isFunction(this.optimizer)) { return cb(); } var self = this; var optimizer = this.optimizer(this.src, this.dest, cb); optimizer.on('error', function (err) { return cb(new Error(err)); }); optimizer.stderr.on('data', function (data) { return cb(new Error(data.toString())); }); optimizer.once('close', function (code) { if (code === 0) { return cb(null, self._process()); } }); };
Imagemin.prototype._process = function () { var size = fs.statSync(this.src).size; var saved = size - fs.statSync(this.dest).size; if (this.opts.cache && !cache.check(this.src, { name: 'imagemin' })) { cache.store(this.dest, this.src, { name: 'imagemin' }); } var data = { origSize: filesize(size), origSizeRaw: size, diffSize: filesize(saved), diffSizeRaw: saved }; return data; };