minify-html/bench/runners/minimize/index.js

46 lines
1.0 KiB
JavaScript

const minimize = require("minimize");
const { htmlOnly, esbuildCss, esbuildJs, run } = require("../common");
const jsMime = new Set([
undefined,
"application/ecmascript",
"application/javascript",
"application/x-ecmascript",
"application/x-javascript",
"text/ecmascript",
"text/javascript",
"text/javascript1.0",
"text/javascript1.1",
"text/javascript1.2",
"text/javascript1.3",
"text/javascript1.4",
"text/javascript1.5",
"text/jscript",
"text/livescript",
"text/x-ecmascript",
"text/x-javascript",
]);
const jsCssPlugin = {
id: "esbuild",
element: (node, next) => {
if (node.type === "text" && node.parent) {
if (
node.parent.type === "script" &&
jsMime.has(node.parent.attribs.type)
) {
node.data = esbuildJs(node.data);
} else if (node.parent.type === "style") {
node.data = esbuildCss(node.data);
}
}
next();
},
};
const plugins = htmlOnly ? [] : [jsCssPlugin];
const minifier = new minimize({ plugins });
run((src) => minifier.parse(src.toString()));