Ich muss ein ganzes Verzeichnis mit Node.js zippen. Ich benutze derzeit node-zip und generiert bei jeder Ausführung des Prozesses eine ungültige ZIP-Datei (wie Sie aus this Github issue sehen können).Müssen ein gesamtes Verzeichnis mit Node.js ZIP ZIPen
Gibt es eine andere, bessere, Node.js Option, mit der ich ein Verzeichnis zippen kann?
EDIT: Ich landete archiver
writeZip = function(dir,name) {
var zip = new JSZip(),
code = zip.folder(dir),
output = zip.generate(),
filename = ['jsd-',name,'.zip'].join('');
fs.writeFileSync(baseDir + filename, output);
console.log('creating ' + filename);
};
Beispielwert für Parameter mit bis:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
UPDATE: Für jene über die Umsetzung zu fragen habe ich, here's a link to my downloader:
Guter Ruf @booyaa. Vielen Dank. – commadelimited
Jemand auf Twitter vorgeschlagen, die child_process-API, und rufen Sie einfach das System PLZ: http://nodejs.org/api/child_process.html – commadelimited
Ich habe den child_process-Ansatz versucht. Es hat zwei Vorbehalte. ** 1) ** Unix 'zip' Befehl enthält alle übergeordneten Ordnerhierarchie des aktuellen Arbeitsverzeichnisses in der gezippten Datei. Das könnte für dich in Ordnung sein, es war nicht für mich. Auch das Ändern des aktuellen Arbeitsverzeichnisses in child_process wirkt sich nicht auf die Ergebnisse aus. ** 2) ** Um dieses Problem zu überwinden, müssen Sie 'pushd' verwenden, um in den Ordner zu springen, den Sie zippen und' zip -r', aber da 'pushd' in bash und nicht/bin/sh eingebaut ist Sie müssen auch/bin/bash verwenden. In meinem speziellen Fall war das nicht möglich. Nur ein Kopf hoch. – johnozbay