Necesito comprimir un directorio completo usando Node.js. Actualmente estoy usando node-zip y cada vez que se ejecuta el proceso genera un archivo ZIP no válido (como puede ver en este problema de Github ).
¿Hay otra opción de Node.js mejor que me permita comprimir un directorio?
EDITAR: terminé usando el archivador
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);
};
valor de muestra para los parámetros:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
ACTUALIZACIÓN: Para aquellos que preguntan sobre la implementación que utilicé, aquí hay un enlace a mi descargador :
zip
comando Unix incluye toda la jerarquía de carpetas principales del directorio de trabajo actual en el archivo comprimido. Esto podría estar bien para ti, no lo fue para mí. Además, cambiar el directorio de trabajo actual en child_process de alguna manera no afecta los resultados. 2) Para superar este problema, debe usar pushd
para saltar a la carpeta que comprimirá y zip -r
, pero como pushd
está integrado en bash y no en / bin / sh, también debe usar / bin / bash. En mi caso específico, esto no fue posible. Solo un aviso.
child_process.exec
api del nodo de @johnozbay le permite especificar el cwd desde donde desea ejecutar el comando. Cambiar el CWD soluciona el problema de la jerarquía de la carpeta principal. También soluciona el problema de no necesitar pushd
. Recomiendo completamente child_process.