imagemin-gifsicle
Version:
Imagemin plugin for Gifsicle
36 lines (27 loc) • 735 B
JavaScript
;
const execa = require('execa');
const gifsicle = require('gifsicle');
const isGif = require('is-gif');
module.exports = (options = {}) => async input => {
if (!Buffer.isBuffer(input)) {
throw new TypeError(`Expected \`input\` to be of type \`Buffer\` but received type \`${typeof input}\``);
}
if (!isGif(input)) {
return input;
}
const args = ['--no-warnings', '--no-app-extensions'];
if (options.interlaced) {
args.push('--interlace');
}
if (options.optimizationLevel) {
args.push(`--optimize=${options.optimizationLevel}`);
}
if (options.colors) {
args.push(`--colors=${options.colors}`);
}
const {stdout} = await execa(gifsicle, args, {
encoding: null,
input
});
return stdout;
};