mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-02 12:00:03 +02:00
minify css
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
#mywidget {
|
||||||
|
border: 2px solid red;
|
||||||
|
}
|
||||||
|
1
example/dist/dist.css
vendored
Normal file
1
example/dist/dist.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#mywidget{border:2px solid red}
|
@@ -3,15 +3,21 @@ var fs = require('fs');
|
|||||||
let jsdom = require('jsdom');
|
let jsdom = require('jsdom');
|
||||||
let JSDOM = jsdom.JSDOM;
|
let JSDOM = jsdom.JSDOM;
|
||||||
let babel = require("babel-core");
|
let babel = require("babel-core");
|
||||||
|
let CleanCSS = require('clean-css');
|
||||||
|
|
||||||
let usage = `usage:
|
let usage = `usage:
|
||||||
minifyfromhtml -o <output dir> < <input file>
|
minifyfromhtml --js=<output js file> --css=<output css file> < <input file>
|
||||||
|
|
||||||
the minification process uses babel under the hood, so you can modify
|
the minification process uses babel under the hood, so you can modify
|
||||||
the minification with a .babelrc file.
|
the minification with a .babelrc file.
|
||||||
|
https://babeljs.io/
|
||||||
|
|
||||||
|
the css minification process uses clean-css, so you can modify
|
||||||
|
the minification with
|
||||||
|
https://github.com/jakubpawlowicz/clean-css
|
||||||
|
|
||||||
example:
|
example:
|
||||||
minifyfromhtml -o dist < example/index.html
|
minifyfromhtml --js=dist/mywidget.min.js --css=dist/mywidget.min.css < example/index.html
|
||||||
`;
|
`;
|
||||||
|
|
||||||
let outputDir = argv.o;
|
let outputDir = argv.o;
|
||||||
@@ -21,7 +27,7 @@ if (argv.h) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!argv.o) {
|
if (!argv.js || !argv.css) {
|
||||||
console.log(usage);
|
console.log(usage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -72,17 +78,29 @@ readStdin(function(html) {
|
|||||||
//write scripts
|
//write scripts
|
||||||
|
|
||||||
//clear out dist file
|
//clear out dist file
|
||||||
fs.writeFileSync(outputDir + '/dist.js', '');
|
fs.writeFileSync(argv.js, '');
|
||||||
|
|
||||||
//write files
|
//write files
|
||||||
for (let i = 0; i < scripts.length; i++) {
|
for (let i = 0; i < scripts.length; i++) {
|
||||||
const script = scripts[i];
|
const script = scripts[i];
|
||||||
|
|
||||||
fs.appendFileSync(outputDir + '/dist.js', processedScripts[script] + '\n');
|
console.log(script + ' -> ' + argv.js);
|
||||||
|
fs.appendFileSync(argv.js, processedScripts[script] + '\n');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(getTagAttrs(dom, 'link', 'href'));
|
//process css
|
||||||
|
let styles = getTagAttrs(dom, 'link', 'href');
|
||||||
|
let processedStyles = {};
|
||||||
|
fs.writeFileSync(argv.css, '');
|
||||||
|
for (let i = 0; i < styles.length; i++) {
|
||||||
|
let style = styles[i];
|
||||||
|
|
||||||
|
let css = fs.readFileSync(style);
|
||||||
|
|
||||||
|
console.log(style + ' -> ' + argv.css);
|
||||||
|
fs.appendFileSync(argv.css, (new CleanCSS().minify(css)).styles + '\n');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user