gen-srcset
Version:

51 lines (38 loc) • 1.81 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _commander = require("commander");
var _path = _interopRequireDefault(require("path"));
var _threads = require("threads");
var _getFilenameBase = _interopRequireDefault(require("./helpers/getFilenameBase"));
_commander.program.version('0.4.1').option('-i, --input <path>', 'Input image path').option('-b, --breakpoints <breakpoints>', 'breakpoints which images will be generated').option('-o, --output <output>', 'output path').option('-n, --noAvif', "don't generate avif files");
_commander.program.parse(process.argv);
const main = async () => {
const options = _commander.program.opts();
if (!options.input) throw new Error('input argument is required');
if (!options.breakpoints) throw new Error('breakpoints argument is required');
const input = _path.default.resolve(options.input);
const filename = _path.default.basename(input);
const filenameBase = (0, _getFilenameBase.default)(filename);
const output = options.output || '.';
const {
noAvif
} = options;
const breakpoints = options.breakpoints.split(',').map(value => value.replace(' ', ''));
const pictureService = (0, _threads.Pool)(() => (0, _threads.spawn)(new _threads.Worker('./services/picture.js')));
breakpoints.forEach(async breakpoint => {
pictureService.queue(picture => picture.resizeOnly(input, breakpoint, output, filenameBase, filename));
});
breakpoints.forEach(async breakpoint => {
if (noAvif) return;
pictureService.queue(picture => picture.toAvif(input, breakpoint, output, filenameBase));
});
await pictureService.completed();
await pictureService.terminate();
};
try {
main();
} catch (error) {
console.log(error);
process.exit(1);
}