Adm Zip压缩文件作为目录

我正在尝试使用Adm-Zip将文件打包成一个zip文件

var AdmZip = require('adm-zip'); var pathToZip = 'build/release/Ext.zip'; var zip = new AdmZip(); zip.addLocalFile('background.js'); zip.addLocalFile('chrome_ex_oauth.html'); zip.addLocalFolder('images'); zip.writeZip(pathToZip); 

但是,所有文件都被作为zip文件夹添加,实际的内容没有被压缩。

截图

入门指南如下,这似乎是一个非常简单的例子,不按预期工作。 我究竟做错了什么? https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction

所以我做了一些挖掘: https : //github.com/cthackers/adm-zip/blob/master/adm-zip.js#L275

addFile最终由addLocalFile调用,这似乎是错误发生的地方,特别是在第281行 ,它检查ZipEntry是否是一个目录。 错误的标志正在被应用。

为了解决这个问题,我最终手动调用了addFile,并且自己指定了这些属性,这样就不会依赖于自动检测并将文件错误地标记为目录。

 addFile(filePathInArchive, fileBuffer, '', 0644 << 16); 

要自己获取fileBuffer,可以使用fs.readFile或fs.readFileSync

从adm-zip的wiki :

[void] addLocalFile(String localPath,String zipPath)

将文件从磁盘添加到存档。

[void] addLocalFolder(String localPath,String zipPath)

将本地目录及其所有嵌套文件和目录添加到存档中

看起来你错过了第二个参数是zipPath。