Saya perlu membuat zip seluruh direktori menggunakan Node.js. Saat ini saya menggunakan node-zip dan setiap kali proses berjalan, itu menghasilkan file ZIP yang tidak valid (seperti yang Anda lihat dari masalah Github ini ).
Apakah ada opsi Node.js lain yang lebih baik yang memungkinkan saya untuk ZIP direktori?
EDIT: Saya akhirnya menggunakan Pengarsip
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);
};
nilai sampel untuk parameter:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
UPDATE: Bagi mereka yang bertanya tentang implementasi yang saya gunakan, berikut ini tautan ke pengunduh saya :
zip
perintah unix menyertakan semua hierarki folder induk dari direktori kerja saat ini dalam file zip. Ini mungkin baik untuk Anda, itu bukan untuk saya. Juga mengubah direktori kerja saat ini di child_process tidak mempengaruhi hasil. 2) Untuk mengatasi masalah ini, Anda harus menggunakan pushd
untuk melompat ke folder yang akan Anda zip dan zip -r
, tetapi karena pushd
dibangun ke dalam bash dan bukan / bin / sh Anda perlu menggunakan / bin / bash juga. Dalam kasus khusus saya ini tidak mungkin. Hanya satu kepala.
child_process.exec
memungkinkan Anda menentukan cwd dari mana Anda ingin menjalankan perintah. Mengubah CWD memperbaiki masalah hierarki folder induk. Ini juga memperbaiki masalah tidak perlu pushd
. Saya sangat merekomendasikan child_process.