我需要使用Node.js压缩整个目录。我目前正在使用node-zip,但每次运行该过程时,它都会生成一个无效的ZIP文件(如此Github问题所示)。
是否有另一种更好的Node.js选项可以让我压缩目录?
编辑:最终我使用了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);
};
参数的示例值:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
更新:针对那些询问我使用的实现方式的人,这里是我的下载器链接。
zip
命令在压缩文件时会包含当前工作目录的所有父文件夹层级,这对你可能没问题,但对我来说不行。而且,在child_process中更改当前工作目录似乎并不影响结果。2)为了解决这个问题,你需要使用pushd
跳转到要压缩的文件夹并使用zip -r
,但由于pushd
是bash内置命令而不是/bin/sh,所以你需要使用/bin/bash。在我的特定情况下,这是不可能的。提前告诉你一声。 - johnozbaychild_process.exec
API允许您指定要运行命令的cwd。更改CWD确实解决了父文件夹层次结构的问题。它还解决了不需要pushd
的问题。我完全推荐使用child_process。 - Govind Rai