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 を使用できます。
var Zip = new admZip();
var fs=require('fs-extra');
Zip.addFile('NGINX/app.js',fs.readFileSync('./app.js'),'',0644);
Zip.writeZip("./files.Zip");