Preciso compactar um diretório inteiro usando Node.js. No momento, estou usando o node-zip e cada vez que o processo é executado, ele gera um arquivo ZIP inválido (como você pode ver neste problema no Github ).
Existe outra opção melhor do Node.js que me permitirá compactar um diretório?
EDIT: Acabei usando arquivador
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);
};
valor de amostra para parâmetros:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
ATUALIZAÇÃO: para quem pergunta sobre a implementação que usei, aqui está um link para meu downloader :
zip
comando unix inclui toda a hierarquia de pasta pai do diretório de trabalho atual no arquivo compactado. Isso pode ser bom para você, não era para mim. Além disso, alterar o diretório de trabalho atual em child_process de alguma forma não afeta os resultados. 2) Para superar este problema, você deve usar o pushd
para pular para a pasta que irá compactar e zip -r
, mas como pushd
está embutido no bash e não no / bin / sh, você precisa usar / bin / bash também. No meu caso específico, isso não foi possível. Apenas um aviso.
child_process.exec
API do nó @johnozbay permite que você especifique o cwd de onde deseja executar o comando. Alterar o CWD corrige o problema da hierarquia da pasta pai. Ele também corrige o problema de não precisar pushd
. Eu recomendo totalmente child_process.