UNPKG

@plugjs/zip

Version:

Zip File Plugin for the PlugJS Build System ===========================================

36 lines (35 loc) 1.25 kB
// zip.ts import { createWriteStream } from "node:fs"; import { $p, $ylw, assert, Files } from "@plugjs/plug"; import { getAbsoluteParent } from "@plugjs/plug/paths"; import { ZipFile } from "yazl"; var Zip = class { constructor(_filename, _options = {}) { this._filename = _filename; this._options = _options; assert(_filename, "No filename specified for ZIP file"); } pipe(files, context) { const filename = context.resolve(this._filename); const zipfile = new ZipFile(); const zipstream = createWriteStream(filename); zipfile.outputStream.pipe(zipstream); context.log.info(`Packaging ${$ylw(files.length)} files`); for (const [relative, absolute] of files.pathMappings()) { context.log.debug(`Adding file ${$p(absolute)}`); zipfile.addFile(absolute, relative, this._options); } const directory = getAbsoluteParent(filename); const output = Files.builder(directory).add(filename).build(); zipfile.end(); return new Promise((resolve, reject) => { zipstream.on("close", () => resolve(output)); zipfile.on("error", (error) => reject(error)); zipstream.on("error", (error) => reject(error)); }); } }; export { Zip }; //# sourceMappingURL=zip.mjs.map