UNPKG

react-compress-dist

Version:

Easy way to compress your JS bundle when you compile build folder

54 lines (47 loc) 1.36 kB
const zlib = require('zlib'); const fs = require('fs'); const util = require('util'); const compressors = { br: { func: util.promisify(zlib.brotliCompress), options: { params: { [zlib.constants.BROTLI_PARAM_QUALITY]: zlib.constants.BROTLI_MAX_QUALITY, }, }, }, gz: { func: util.promisify(zlib.gzip), options: { level: zlib.constants.Z_BEST_COMPRESSION, }, }, }; const startCompressingFile = (file:any, algorithm:any) => { return new Promise<void>(async (resolve, reject) => { try { const buffer = await readFile(file); const { func, options } = compressors[algorithm]; const compressedBuffer = await func(buffer, options); await writeFile(file + '.' + algorithm, compressedBuffer); return resolve(); } catch (err) { reject(err); } }); }; const startCompressingAll = async (filesToCompress, algorithm) => { const compressionPromises = filesToCompress.map((file) => startCompressingFile(file, algorithm) ); await Promise.all(compressionPromises); }; const readFile = util.promisify(fs.readFile); const writeFile = util.promisify(fs.writeFile); const supportedAlgorithms = Object.keys(compressors); module.exports = { startCompressingAll, supportedAlgorithms, }; export {}