Example #1
0
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());
        }
    });
};
Example #2
0
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;
};