31 lines
716 B
JavaScript
31 lines
716 B
JavaScript
import { createFilter } from "@rollup/pluginutils";
|
|
import { Minifier } from "minify-html-stream";
|
|
import { Readable } from "stream";
|
|
|
|
function htmlMinifier(options) {
|
|
const filter = createFilter(["**/*.svelte"], options.exclude);
|
|
|
|
return {
|
|
name: "htmlMinifier",
|
|
async transform(code, id) {
|
|
if (!filter(id)) return code;
|
|
|
|
let stream = new Readable();
|
|
stream.push(code);
|
|
stream.push(null);
|
|
stream = stream.pipe(new Minifier(options.options));
|
|
|
|
const chunks = [];
|
|
|
|
for await (let chunk of stream) {
|
|
chunks.push(chunk);
|
|
}
|
|
|
|
const buffer = Buffer.concat(chunks);
|
|
|
|
return buffer.toString("utf-8");
|
|
},
|
|
};
|
|
}
|
|
|
|
export default htmlMinifier;
|