vite-plugin-singlefile-compression
Version:
Compress all assets and embeds them into `dist/index.html`, making it convenient to share as a single HTML file.
25 lines (24 loc) • 732 B
JavaScript
import base128 from "base128-ascii";
import zlib from 'zlib';
export function compress(format, buf, useBase128) {
const options = {
level: zlib.constants.Z_BEST_COMPRESSION,
};
let outBuf;
switch (format) {
case "deflate":
outBuf = zlib.deflateSync(buf, options);
break;
case "deflate-raw":
outBuf = zlib.deflateRawSync(buf, options);
break;
case "gzip":
outBuf = zlib.gzipSync(buf, options);
break;
default:
throw `unknown compress format ${format}`;
}
return useBase128
? base128.encode(Uint8Array.from(outBuf)).toJSTemplateLiterals()
: outBuf.toString('base64');
}