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。