files.forEach(f => { if (f.contents) { zip.addBuffer(typeof f.contents === 'string' ? Buffer.from(f.contents, 'utf8') : f.contents, f.path); } else if (f.localPath) { zip.addFile(f.localPath, f.path); } });
return new Promise<string>((c, e) => { const zip = new yazl.ZipFile(); files.forEach(f => f.contents ? zip.addBuffer(typeof f.contents === 'string' ? Buffer.from(f.contents, 'utf8') : f.contents, f.path) : zip.addFile(f.localPath, f.path)); zip.end(); const zipStream = createWriteStream(zipPath); zip.outputStream.pipe(zipStream); zip.outputStream.once('error', e); zipStream.once('error', e); zipStream.once('finish', () => c(zipPath)); });
import { ZipFile } from "yazl"; import { Readable } from "stream"; import fs = require('fs'); const zipfile = new ZipFile(); zipfile.addFile("file1.txt", "file1.txt"); // (add only files, not directories) zipfile.addFile("path/to/file.txt", "path/in/zipfile.txt"); // pipe() can be called any time after the constructor // $ExpectType Readable zipfile.outputStream; zipfile.outputStream.pipe(fs.createWriteStream("output.zip")).on("close", () => { console.log("done"); }); // alternate apis for adding files: zipfile.addReadStream(process.stdin, "stdin.txt", { mtime: new Date(), mode: parseInt("0100664", 8), // -rw-rw-r-- }); zipfile.addBuffer(new Buffer("hello"), "hello.txt", { mtime: new Date(), mode: parseInt("0100664", 8), // -rw-rw-r-- }); // call end() after all the files have been added zipfile.end();
files.forEach(f => f.contents ? zip.addBuffer(typeof f.contents === 'string' ? Buffer.from(f.contents, 'utf8') : f.contents, f.path) : zip.addFile(f.localPath, f.path));