From 96dbb27eeae34fe36538fddc51fb74ea293c612e Mon Sep 17 00:00:00 2001 From: s2 Date: Mon, 15 Apr 2019 15:27:02 +0200 Subject: [PATCH] refactor --- minifyfromhtml.js | 115 +++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 72 deletions(-) diff --git a/minifyfromhtml.js b/minifyfromhtml.js index 0c7f046..ba0d900 100644 --- a/minifyfromhtml.js +++ b/minifyfromhtml.js @@ -17,15 +17,15 @@ let usage = `usage: if (argv.h) { console.log(usage); - return; + process.exit(0); } if (!argv.js || !argv.css) { console.log(usage); - return; + process.exit(0); } -var excludeFiles = argv.exclude || []; +let excludeFiles = argv.exclude || []; if (typeof(excludeFiles) === 'string') { excludeFiles = [excludeFiles]; } @@ -40,7 +40,8 @@ let readStdin = function(cb) { process.stdin.on('end', function() { cb(stdin); }); -} +}; + readStdin(function(html) { let dom = new JSDOM(html); @@ -57,79 +58,49 @@ readStdin(function(html) { } } return scripts; - } + }; - //process scripts - let scripts = getTagAttrs(dom, 'script', 'src'); - //remove exluded - excludeFiles.forEach(i => { - var index = scripts.indexOf(i); - if (index !== -1) { - scripts.splice(index, 1); - } - }); - - let processedScripts = {}; - for (let i = 0; i < scripts.length; i++) { - let script = scripts[i]; - - minify(script, 'stream') - .then(function(data) { - processedScripts[script] = data; - - if (Object.keys(processedScripts).length === scripts.length) { - //write scripts - - //clear out dist file - fs.writeFileSync(argv.js, ''); - - //write files - for (let i = 0; i < scripts.length; i++) { - const script = scripts[i]; - - console.log(script + ' -> ' + argv.js); - fs.appendFileSync(argv.js, processedScripts[script] + '\n'); - } + let processThings = function(things, outFile) { + //remove exluded + excludeFiles.forEach(i => { + let index = things.indexOf(i); + if (index !== -1) { + things.splice(index, 1); } }); + + let processedThings = {}; + for (let i = 0; i < things.length; i++) { + let thing = things[i]; + + minify(thing) + .then(function(data) { + processedThings[thing] = data; + + if (Object.keys(processedThings).length === things.length) { + //write things + + //clear out dist file + fs.writeFileSync(outFile, ''); + + //write files + for (let i = 0; i < things.length; i++) { + const thing = things[i]; + + console.log(thing + ' -> ' + outFile); + fs.appendFileSync(outFile, processedThings[thing] + '\n'); + } + } + }); + } + }; + + if (argv.js) { + processThings(getTagAttrs(dom, 'script', 'src'), argv.js); } - - //process css - let styles = getTagAttrs(dom, 'link', 'href'); - - //remove exluded - excludeFiles.forEach(i => { - var index = styles.indexOf(i); - if (index !== -1) { - styles.splice(index, 1); - } - }); - - let processedStyles = {}; - fs.writeFileSync(argv.css, ''); - for (let i = 0; i < styles.length; i++) { - let style = styles[i]; - - minify(style, 'stream') - .then(function(data) { - processedStyles[style] = data; - - if (Object.keys(processedStyles).length === styles.length) { - //write styles - - //clear out dist file - fs.writeFileSync(argv.css, ''); - - //write files - for (let i = 0; i < styles.length; i++) { - const style = styles[i]; - - console.log(style + ' -> ' + argv.css); - fs.appendFileSync(argv.css, processedStyles[style] + '\n'); - } - } - }); + if (argv.css) { + processThings(getTagAttrs(dom, 'link', 'href'), argv.css); } });