Ho bisogno di comprimere un'intera directory usando Node.js. Attualmente sto utilizzando node-zip e ogni volta che il processo viene eseguito genera un file ZIP non valido (come puoi vedere da questo problema di Github ).
C'è un'altra, migliore, opzione Node.js che mi consentirà di comprimere una directory?
EDIT: ho finito per usare l' 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);
};
valore di esempio per i parametri:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
AGGIORNAMENTO: Per coloro che chiedono informazioni sull'implementazione che ho usato, ecco un collegamento al mio downloader :
zip
comando unix include tutta la gerarchia delle cartelle principali della directory di lavoro corrente nel file zippato. Potrebbe andar bene per te, non per me. Anche la modifica della directory di lavoro corrente in child_process in qualche modo non influisce sui risultati. 2) Per superare questo problema, devi usare pushd
per saltare nella cartella che comprimerai e zip -r
, ma poiché pushd
è integrato in bash e non / bin / sh devi usare anche / bin / bash. Nel mio caso specifico questo non è stato possibile. Solo un avviso.
child_process.exec
API di @johnozbay node consente di specificare il cwd da cui si desidera eseguire il comando. La modifica del CWD risolve il problema della gerarchia delle cartelle principali. Risolve anche il problema di non aver bisogno pushd
. Consiglio vivamente child_process.