@plugjs/zip
Version:
Zip File Plugin for the PlugJS Build System ===========================================
36 lines (35 loc) • 1.25 kB
JavaScript
// 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