Javascript zip存档中的Nodejs和更新文件

Javascript zip存档中的Nodejs和更新文件,javascript,node.js,filesystems,zip,ziparchive,Javascript,Node.js,Filesystems,Zip,Ziparchive,我想用nodejs更新zip arhive中的文件。例如,我有一个包含两个文件的zip文件: a.zip |-a.txt |-b.txt 我使用archiver: var archiver = require('archiver'); var archive = archiver('zip', {}); archive.pipe(fs.createWriteStream('./a.zip')); archive.append(fs.createReadStream('./c.t

我想用
nodejs
更新zip arhive中的文件。例如,我有一个包含两个文件的zip文件:

 a.zip
   |-a.txt
   |-b.txt 
我使用archiver:

var archiver = require('archiver');
var archive = archiver('zip', {});
archive.pipe(fs.createWriteStream('./a.zip'));
archive.append(fs.createReadStream('./c.txt'), { name: 't.txt' });
archive.finalize();
但我有个问题,我的档案被完全覆盖了。因此,我得到:

 a.zip
   |-t.txt
如果我使用:

archive.file('./a.txt', { name: 't.txt' });
结果是一样的。 我想得到这个结构作为结果

 a.zip
   |-a.txt
   |-b.txt
   |-t.txt

或者更新其中一个文件的内容
a.txt
b.txt

当前无法使用
archiver
将其附加到现有存档中。以下是2013年发行的相关问题:

在您的例子中,
append
是附加到流,而不是附加到新文件的目标
archiver
不关心
a.zip
上的内容,它只是用您给
archiver.append
的任何内容覆盖它

您的最佳选择似乎是使用解压现有文件,然后使用
archiver
将结果附加到新版本的存档中