Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
'use strict';
var execFile = require('child_process').execFile;
var fs = require('fs');
var imageType = require('image-type');
var pngquant = require('pngquant-bin').path;
var tempfile = require('tempfile');
var rm = require('rimraf');
/**
* pngquant image-min plugin
*
* @param {Object} opts
* @api public
*/
module.exports = function (opts) {
opts = opts || {};
return function (file, imagemin, cb) {
if (imageType(file.contents) !== 'png') {
return cb();
Imagemin.prototype._optimizePng = function () {
var args = ['-strip', 'all', '-quiet'];
var optipng = require('optipng-bin').stream;
var pngquant;
if (typeof this.optimizationLevel === 'number') {
args.push('-o', this.optimizationLevel);
}
if (this.opts.pngquant) {
pngquant = require('pngquant-bin').path;
return spawn(optipng, args).stdout.pipe(spawn(pngquant, ['-']));
}
return spawn(optipng, args);
};
io(input: string, output: string) {
const { color = 256 } = this.options
const pngquantBinFixed = pngquantBin.replace('app.asar', 'app.asar.unpacked')
return spawn(pngquantBinFixed, [
color.toString(),
input,
'-o',
output,
], {
capture: [ 'stdout', 'stderr' ],
}).catch(e => {
throw new Error(e.message + '\n' + e.stderr)
})
}
}