What is @yarnpkg/libzip?
@yarnpkg/libzip is a library that provides functionalities for working with ZIP archives. It is part of the Yarn package manager's ecosystem and allows for creating, reading, and manipulating ZIP files programmatically.
What are @yarnpkg/libzip's main functionalities?
Creating a ZIP Archive
This code demonstrates how to create a ZIP archive and add a file to it using @yarnpkg/libzip. The `makeInterface` function initializes the libzip interface, and `ZipFS` is used to create and manipulate the ZIP file.
const { makeInterface } = require('@yarnpkg/libzip');
const { ZipFS } = require('@yarnpkg/fslib');
(async () => {
const libzip = await makeInterface();
const zipFs = new ZipFS(null, { libzip });
zipFs.writeFileSync('/file.txt', 'Hello, world!');
zipFs.saveAndClose();
})();
Reading a ZIP Archive
This code demonstrates how to read a ZIP archive and extract a file's content using @yarnpkg/libzip. The ZIP file is read from the filesystem, and `ZipFS` is used to access and read the file within the archive.
const { makeInterface } = require('@yarnpkg/libzip');
const { ZipFS } = require('@yarnpkg/fslib');
const fs = require('fs');
(async () => {
const libzip = await makeInterface();
const zipData = fs.readFileSync('archive.zip');
const zipFs = new ZipFS(zipData, { libzip });
const content = zipFs.readFileSync('/file.txt', 'utf8');
console.log(content); // Outputs: Hello, world!
})();
Listing Files in a ZIP Archive
This code demonstrates how to list all files in a ZIP archive using @yarnpkg/libzip. The ZIP file is read from the filesystem, and `ZipFS` is used to list the files within the archive.
const { makeInterface } = require('@yarnpkg/libzip');
const { ZipFS } = require('@yarnpkg/fslib');
const fs = require('fs');
(async () => {
const libzip = await makeInterface();
const zipData = fs.readFileSync('archive.zip');
const zipFs = new ZipFS(zipData, { libzip });
const files = zipFs.readdirSync('/');
console.log(files); // Outputs: ['file.txt']
})();
Other packages similar to @yarnpkg/libzip
adm-zip
ADM-ZIP is a pure JavaScript implementation for ZIP file handling. It provides similar functionalities to @yarnpkg/libzip, such as creating, reading, and extracting ZIP files. ADM-ZIP is widely used and has a straightforward API, making it a good alternative for ZIP file manipulation.
jszip
JSZip is a library for creating, reading, and editing .zip files with a JavaScript API. It is highly popular and well-documented, offering a range of features similar to @yarnpkg/libzip. JSZip is known for its ease of use and compatibility with both Node.js and browser environments.
node-stream-zip
node-stream-zip is a library for working with ZIP archives in a streaming manner. It allows for efficient reading and extraction of large ZIP files without loading the entire archive into memory. This makes it a good choice for handling large ZIP files compared to @yarnpkg/libzip.