lib/archive.js (23 lines of code) (raw):

const path = require('path'); const fs = require('fs'); const Archiver = require('archiver-promise'); const mkdirp = require('mkdirp'); class Archive { /** * @param {string} archivePath */ constructor(archivePath) { mkdirp.sync(path.dirname(archivePath)); const archive = Archiver(archivePath, { zlib: { level: 9 } }); this._archive = archive; } /** * @param {string} sourcePath * @param {string} filename - Final relative file path from the archive root */ addFile(sourcePath, filename) { return this._archive.file(sourcePath, { name: filename }); } /** * @param {Buffer} buffer * @param {string} filename - Final relative file path from the archive root */ addFileFromBuffer(buffer, filename) { return this._archive.append(buffer, { name: filename }) } finalize() { return this._archive.finalize(); } } module.exports = Archive;