我需要使用Node.js压缩整个目录。我当前使用的是node-zip,每次运行该进程时,它都会生成一个无效的ZIP文件(如您从此Github问题中所见)。
还有另一个更好的Node.js选项,它允许我压缩目录吗?
编辑:我最终使用存档器
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和压缩的文件夹zip -r
,但是由于pushd
内置于bash而非/ bin / sh中,因此您还需要使用/ bin / bash。在我的特定情况下,这是不可能的。只是抬头。
child_process.exec
api使您可以从要运行命令的位置指定cwd。更改CWD确实可以解决父文件夹层次结构的问题。它还解决了不需要的问题pushd
。我完全推荐child_process。