Мені потрібно скопіювати весь каталог за допомогою Node.js. Зараз я використовую node-zip, і кожен раз, коли процес запускається, він генерує недійсний ZIP-файл (як ви бачите з цієї проблеми Github ).
Чи є інший, кращий варіант, 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>
ОНОВЛЕННЯ: Для тих, хто запитує про використання, яку я використав, ось посилання на моє завантажувач :
zip
Команда unix включає всю ієрархію батьківських папок поточного робочого каталогу у заархівованому файлі. Це може бути для вас нормально, це не для мене. Також зміна поточного робочого каталогу в child_process якось не впливає на результати. 2) Щоб подолати цю проблему, вам потрібно скористатися, pushd
щоб перейти в папку, яку ви будете зіштовхувати zip -r
, але оскільки pushd
вона вбудована в bash, а не / bin / sh, вам також потрібно використовувати / bin / bash. У моєму конкретному випадку це було неможливо. Просто голови вгору.
child_process.exec
дозволяє вказати cwd, звідки ви хочете запустити команду. Зміна CWD вирішує проблему ієрархії батьківської папки. Він також фіксує питання про непотрібність pushd
. Я повністю рекомендую child_process.