1
0
mirror of https://github.com/S2-/minifyfromhtml.git synced 2025-08-02 12:00:03 +02:00
Files
minifyfromhtml/node_modules/minify/bin/minify.js
2020-02-07 22:55:28 +01:00

102 lines
1.9 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
const Pack = require('../package');
const Version = Pack.version;
const log = function(...args) {
console.log(...args);
process.stdin.pause();
};
const Argv = process.argv;
const files = Argv.slice(2);
const [In] = files;
log.error = (e) => {
console.error(e);
process.stdin.pause();
};
process.on('uncaughtException', (error) => {
if (error.code !== 'EPIPE')
log(error);
});
minify();
function readStd(callback) {
const {stdin} = process;
let chunks = '';
const read = () => {
const chunk = stdin.read();
if (chunk)
return chunks += chunk;
stdin.removeListener('readable', read);
callback(chunks);
};
stdin.setEncoding('utf8');
stdin.addListener('readable', read);
}
function minify() {
if (!In || /^(-h|--help)$/.test(In))
return help();
if (/^--(js|css|html)$/.test(In))
return readStd(processStream);
if (/^(-v|--version)$/.test(In))
return log('v' + Version);
uglifyFiles(files);
}
function processStream(chunks) {
const minify = require('..');
const tryCatch = require('try-catch');
if (!chunks || !In)
return;
const name = In.replace('--', '');
const [e, data] = tryCatch(minify[name], chunks);
if (e)
return log.error(e);
log(data);
}
function uglifyFiles(files) {
const minify = require('..');
const minifiers = files.map(minify);
Promise.all(minifiers)
.then(logAll)
.catch(log.error);
}
function logAll(array) {
for (const item of array)
log(item);
}
function help() {
const bin = require('../help');
const usage = 'Usage: minify [options]';
console.log(usage);
console.log('Options:');
for (const name of Object.keys(bin)) {
console.log(' %s %s', name, bin[name]);
}
}