Adm Zip 将文件压缩为目录
Adm Zip zipping files as directories
我正在尝试使用 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
来自 adm-zip 的 wiki:
[void] addLocalFile(String localPath, String zipPath)
将文件从磁盘添加到存档。
[void] addLocalFolder(String localPath, String zipPath)
将本地目录及其所有嵌套文件和目录添加到存档
您似乎错过了第二个参数,即 zipPath。
所以我做了一些挖掘:
https://github.com/cthackers/adm-zip/blob/master/adm-zip.js#L275
addFile 最终由 addLocalFile 调用,这似乎是错误发生的地方,特别是在 line 281 它检查 ZipEntry 是否是目录的地方。应用了错误的标志。
为了解决这个问题,我最终手动调用了 addFile 并自己指定了属性,这样它就不会依赖自动检测并错误地将文件标记为目录。
addFile(filePathInArchive, fileBuffer, '', 0644 << 16);
要自己获取一个fileBuffer,可以使用fs.readFile or fs.readFileSync
var zip = new admZip();
var fs=require('fs-extra');
zip.addFile('NGINX/app.js',fs.readFileSync('./app.js'),'',0644);
zip.writeZip("./files.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
来自 adm-zip 的 wiki:
[void] addLocalFile(String localPath, String zipPath)
将文件从磁盘添加到存档。
[void] addLocalFolder(String localPath, String zipPath)
将本地目录及其所有嵌套文件和目录添加到存档
您似乎错过了第二个参数,即 zipPath。
所以我做了一些挖掘: https://github.com/cthackers/adm-zip/blob/master/adm-zip.js#L275
addFile 最终由 addLocalFile 调用,这似乎是错误发生的地方,特别是在 line 281 它检查 ZipEntry 是否是目录的地方。应用了错误的标志。
为了解决这个问题,我最终手动调用了 addFile 并自己指定了属性,这样它就不会依赖自动检测并错误地将文件标记为目录。
addFile(filePathInArchive, fileBuffer, '', 0644 << 16);
要自己获取一个fileBuffer,可以使用fs.readFile or fs.readFileSync
var zip = new admZip();
var fs=require('fs-extra');
zip.addFile('NGINX/app.js',fs.readFileSync('./app.js'),'',0644);
zip.writeZip("./files.zip");