const { gzip } = require('@gfx/zopfli'); const FS = require('fs'); const path = require('path'); const BUNDLE_JS = FS.readFileSync(path.resolve(__dirname, './dist/js/app.js')); const HTML = ` ElegantOTA
`; function chunkArray(myArray, chunk_size) { let index = 0; const arrayLength = myArray.length; const tempArray = []; for (index = 0; index < arrayLength; index += chunk_size) { myChunk = myArray.slice(index, index + chunk_size); // Do something if you want with the group tempArray.push(myChunk); } return tempArray; } function addLineBreaks(buffer) { let data = ''; const chunks = chunkArray(buffer, 30); chunks.forEach((chunk, index) => { data += chunk.join(','); if (index + 1 !== chunks.length) { data += ',\n'; } }); return data; } gzip(HTML, { numiterations: 15 }, (err, output) => { if (err) { return console.error(err); } const FILE = `#ifndef ElegantOTAWebpage_h #define ElegantOTAWebpage_h const uint32_t ELEGANT_HTML_SIZE = ${output.length}; const uint8_t ELEGANT_HTML[] PROGMEM = { ${addLineBreaks(output)} }; #endif `; FS.writeFileSync(path.resolve(__dirname, '../src/elegantWebpage.h'), FILE); console.log(`[COMPRESS] Compressed Build Files to elegantWebpage.h: ${ (output.length/1024).toFixed(2) }KB`); });