forked from oyd/ozgurkon-2021-site
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.
27 lines
947 B
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);
|
|
|