A Node.js library for creating ZIP archives with async APIs, memory efficiency, and streaming support.
yazl is a Node.js library for creating ZIP archive files programmatically. It allows developers to add files, buffers, and streams to a ZIP archive with support for async operations and streaming output. The library solves the problem of generating ZIP files efficiently without blocking the event loop or consuming excessive memory.
Node.js developers who need to generate ZIP archives in applications such as file backup systems, data export features, or package distribution tools.
Developers choose yazl for its non-blocking async APIs, memory-efficient streaming design, and built-in support for large files via ZIP64. It offers fine-grained control over compression and compatibility options.
yet another zip library for node
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses asynchronous APIs to prevent blocking the JavaScript thread, as emphasized in its design principles for efficient I/O handling in Node.js.
Avoids buffering entire files in RAM by piping read streams and output streams, keeping memory usage minimal even for large archives, as detailed in the streaming support feature.
Seamlessly handles files and archives over 4GB by switching to ZIP64 format without manual configuration, ensuring compatibility with large data sets.
Supports adding files from filesystem, buffers, and custom read streams via methods like addFile, addBuffer, and addReadStreamLazy, offering versatility for different data sources.
Only creates ZIP files; for unzipping, developers must integrate a separate library like yauzl, adding complexity and dependency management overhead.
Opens input files one at a time to avoid OS limits on open file handles, which can slow down archiving compared to parallel approaches, as admitted in the philosophy section.
The addBuffer method is limited to buffers of at most 0x3fffffff bytes due to zlib and Node.js constraints, restricting its use for extremely large in-memory data.