mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-02 20:00:05 +02:00
add some babel stuff
This commit is contained in:
@@ -1,34 +1,52 @@
|
||||
var argv = require('minimist')(process.argv.slice(2));
|
||||
var jsdom = require("jsdom");
|
||||
var {JSDOM} = jsdom;
|
||||
let argv = require('minimist')(process.argv.slice(2));
|
||||
let jsdom = require('jsdom');
|
||||
let JSDOM = jsdom.JSDOM;
|
||||
let babel = require("babel-core");
|
||||
|
||||
var usage = `usage:
|
||||
minifyfromhtml < <input file>
|
||||
let usage = `usage:
|
||||
minifyfromhtml -o <output dir> < <input file>
|
||||
|
||||
the minification process uses babel under the hood, so you can modify
|
||||
the minification with a .babelrc file.
|
||||
|
||||
example:
|
||||
minifyfromhtml -o dist < example/index.html
|
||||
`;
|
||||
|
||||
var inputFile = argv.i;
|
||||
let inputFile = argv.i;
|
||||
|
||||
if (argv.h) {
|
||||
console.log(usage);
|
||||
}
|
||||
|
||||
//read stdin
|
||||
var html = '';
|
||||
process.stdin.resume();
|
||||
process.stdin.setEncoding('utf-8');
|
||||
process.stdin.on('data', function(buf) {
|
||||
html += buf;
|
||||
});
|
||||
process.stdin.on('end', function() {
|
||||
var dom = new JSDOM(html);
|
||||
var getScripts = function(dom) {
|
||||
var scripts = [];
|
||||
let execute = function(command, callback) {
|
||||
exec(command, function(error, stdout, stderr) {
|
||||
callback(stdout);
|
||||
});
|
||||
};
|
||||
|
||||
var document = dom.window.document;
|
||||
var scriptTags = document.getElementsByTagName('script');
|
||||
var i = scriptTags.length;
|
||||
while (i--) {
|
||||
var src = scriptTags[i].getAttribute('src');
|
||||
let readStdin = function(cb) {
|
||||
let stdin = '';
|
||||
process.stdin.resume();
|
||||
process.stdin.setEncoding('utf-8');
|
||||
process.stdin.on('data', function(buf) {
|
||||
stdin += buf;
|
||||
});
|
||||
process.stdin.on('end', function() {
|
||||
cb(stdin);
|
||||
});
|
||||
}
|
||||
|
||||
readStdin(function(html) {
|
||||
let dom = new JSDOM(html);
|
||||
let getTagAttrs = function(dom, tag, attr) {
|
||||
let scripts = [];
|
||||
|
||||
let document = dom.window.document;
|
||||
let scriptTags = document.getElementsByTagName(tag);
|
||||
let i = scriptTags.length;
|
||||
for (let i = 0; i < scriptTags.length; i++) {
|
||||
let src = scriptTags[i].getAttribute(attr);
|
||||
if (src) {
|
||||
scripts.push(src);
|
||||
}
|
||||
@@ -36,5 +54,19 @@ process.stdin.on('end', function() {
|
||||
return scripts;
|
||||
}
|
||||
|
||||
console.log(getScripts(dom));
|
||||
let scripts = getTagAttrs(dom, 'script', 'src');
|
||||
let processedScripts = {};
|
||||
for (let i = 0; i < scripts.length; i++) {
|
||||
let script = scripts[i];
|
||||
|
||||
babel.transformFile(script, {}, function(err, result) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return;
|
||||
}
|
||||
processedScripts[script] = result.code;
|
||||
});
|
||||
}
|
||||
|
||||
console.log(getTagAttrs(dom, 'link', 'href'));
|
||||
});
|
||||
|
Reference in New Issue
Block a user