ÖzgürKon 2021
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ozgurkon-2021-site/tools/minify.js

27 lines
947 B

const {readFileSync, writeFileSync} = require('fs');
const {sync: glob} = require('glob');
const {minify} = require('html-minifier');
const {Logger, LogLevel} = require('plop-logger');
const {colorEmojiConfig} = require('plop-logger/lib/extra/colorEmojiConfig');
Logger.config = colorEmojiConfig;
const logger = Logger.getLogger('minifier');
logger.level = LogLevel.All;
const htmlFiles = `public/**/*.html`;
logger.info('Compress HTML files', htmlFiles);
const totalGain = glob(htmlFiles)
.map(file => {
const html = readFileSync(file, 'utf8');
const minified = minify(html, {});
const gain = html.length - minified.length;
if (gain > 0) {
const percent = (gain / html.length) * 100;
logger.debug(file, () => ['gain', percent.toFixed(2), '%'].join(" "));
writeFileSync(file, minified, {flag: 'w'});
}
return gain;
}).reduce((acc, elt) => acc + elt, 0);
logger.info('Total gain', '' + totalGain);