1. ホーム
  2. node.js

[解決済み] Node.jsを使用してディレクトリ全体をZIPする必要があります。

2022-05-11 06:44:30

質問

Node.jsを使用してディレクトリ全体をzipで圧縮する必要があります。現在、node-zipを使用していますが、プロセスを実行するたびに無効なZIPファイルが生成されます(あなたが見ることができるように このGithubの問題 ).

ディレクトリをZIPアップすることができる、他の、より良い、Node.jsのオプションはありますか?

EDIT: 結局、私は アーカイバ

writeZip = function(dir,name) {
var zip = new JSZip(),
    code = zip.folder(dir),
    output = zip.generate(),
    filename = ['jsd-',name,'.zip'].join('');

fs.writeFileSync(baseDir + filename, output);
console.log('creating ' + filename);
};

パラメータのサンプル値です。

dir = /tmp/jsd-<randomstring>/
name = <randomstring>

UPDATEです。 私が使用した実装について質問された方へ。 私のダウンローダーへのリンクはこちらです。 :

解決方法は?

結局 アーカイバ リブです。素晴らしい働きです。

使用例

var fs = require('fs');
var archiver = require('archiver');

var output = fs.createWriteStream('target.zip');
var archive = archiver('zip');

output.on('close', function () {
    console.log(archive.pointer() + ' total bytes');
    console.log('archiver has been finalized and the output file descriptor has closed.');
});

archive.on('error', function(err){
    throw err;
});

archive.pipe(output);

// append files from a sub-directory, putting its contents at the root of archive
archive.directory(source_dir, false);

// append files from a sub-directory and naming it `new-subdir` within the archive
archive.directory('subdir/', 'new-subdir');

archive.finalize();