sha*_*shi 13 javascript zip node.js 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);
Run Code Online (Sandbox Code Playgroud)
但是,所有文件都将作为文件夹添加到zip中,并且实际内容不会被压缩.
入门参考如下,这似乎是一个非常简单的例子,它没有按预期工作.我究竟做错了什么? https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction
小智 15
所以我做了一些挖掘:https: //github.com/cthackers/adm-zip/blob/master/adm-zip.js#L275
addFile最终由addLocalFile调用,这似乎是发生错误的地方,特别是在第281行,它检查ZipEntry是否是一个目录.正在应用错误的标志.
为了解决这个问题,我最终手动调用了addFile并自己指定了属性,因此它不依赖于自动检测并错误地将文件标记为目录.
addFile(filePathInArchive, fileBuffer, '', 0644 << 16);
Run Code Online (Sandbox Code Playgroud)
要自己获取fileBuffer,可以使用fs.readFile或fs.readFileSync