node-7z-esf
v0.4.1
Published
A Node.js wrapper for 7-Zip, originally developed by https://github.com/quentinrossetti and forked for the purpose of setting path to 7zip executable.
Readme
node-7z
A Node.js wrapper for 7-Zip, originally developed by @quentinrossetti and forked for the purpose of setting path to 7zip executable.
Copy of original README: Usage
I chose to use Promises in this library. API is consistent with standard use:
var Zip = require('node-7z'); // Name the class as you want!
var myTask = new Zip();
myTask.extractFull('myArchive.7z', 'destination', { p: 'myPassword' })
// Equivalent to `on('data', function (files) { // ... });`
.progress(function (files) {
console.log('Some files are extracted: %s', files);
});
// When all is done
.then(function () {
console.log('Extracting done!');
});
// On error
.catch(function (err) {
console.error(err);
});Installation
You must have the 7za executable available in your PATH or in the same
directory of your package.json file.
On Debian an Ubuntu install the
p7zip-fullpackage.
On Windows use the
7za.exe(link here) binary.
On Mac OSX use Homebrew
brew install p7zip
npm install --save node-7zAPI
See the 7-Zip documentation for the full list of usages and options (switches).
The type of the list of files can be either String or Array.
Add: Zip.add
Arguments
archivePath to the archive you want to create.filesThe file list to add.optionsAn object of options (7-Zip switches).
Progress
filesA array of all the extracted files AND directories. The/character is used as a path separator on every platform.
Error
errAn Error object.
Delete: Zip.delete
Arguments
archivePath to the archive you want to delete files from.filesThe file list to delete.optionsAn object of options (7-Zip switches).
Error
errAn Error object.
Extract: Zip.extract
Arguments
archiveThe path to the archive you want to extract.destWhere to extract the archive.optionsAn object of options.
Progress
filesA array of all the extracted files AND directories. The/character is used as a path separator on every platform.
Error
errAn Error object.
Extract with full paths: Zip.extractFull
Arguments
archiveThe path to the archive you want to extract.destWhere to extract the archive (creates folders for you).optionsAn object of options.
Progress
filesA array of all the extracted files AND directories. The/character is used as a path separator on every platform.
Error
errAn Error object.
List contents of archive: Zip.list
Arguments
archiveThe path to the archive you want to analyse.optionsAn object of options.
Progress
filesA array of objects of all the extracted files AND directories. The/character is used as a path separator on every platform. Object's properties are:date,attr,sizeandname.
Fulfill
specAn object of tech spec about the archive. Properties are:path,type,method,physicalSizeandheadersSize(Some of them may be missing with non-7z archives).
Error
errAn Error object.
Test integrity of archive: Zip.test
Arguments
archiveThe path to the archive you want to analyse.optionsAn object of options.
Progress
filesA array of all the extracted files AND directories. The/character is used as a path separator on every platform.
Error
errAn Error object.
Update: Zip.update
Arguments
archivePath to the archive you want to update.filesThe file list to update.optionsAn object of options (7-Zip switches).
Progress
filesA array of all the extracted files AND directories. The/character is used as a path separator on every platform.
Error
errAn Error object.
Advanced usage
Compression method
With the 7za binary compression is made like that:
# adds *.exe and *.dll files to solid archive archive.7z using LZMA method
# with 2 MB dictionary and BCJ filter.
7z a archive.7z *.exe -m0=BCJ -m1=LZMA:d=21With node-7z you can translate it like that:
var archive = new Zip();
archive.add('archive.7z', '*.exe', {
m0: '=BCJ',
m1: '=LZMA:d=21'
})
.then(function () {
// Do stuff...
});Add, delete and update multiple files
When adding, deleting or updating archives you can pass either a string or an
array as second parameter (the files parameter).
var archive = new Zip();
archive.delete('bigArchive.7z', [ 'file1', 'file2' ])
.then(function () {
// Do stuff...
});Wildcards
You can extract with wildcards to specify one or more file extensions. To do
this add a wildcards attribute to the options object. The wildcard
attribute takes an Array as value. In this array each item is a wildcard.
var archive = new Zip();
archive.extractFull('archive.zip', 'destination/', {
wildcards: [ '*.txt', '*.md' ], // extract all text and Markdown files
r: true // in each subfolder too
})
.progress(function (files) {
// Do stuff with files...
})
.then(function () {
// Do stuff...
});Note that the r (for recursive) attribute is passed in this example.
With :heart: from quentinrossetti
