Node.js를 사용하여 전체 디렉토리를 압축해야합니다. 현재 node-zip을 사용하고 있으며 프로세스가 실행될 때마다 잘못된 ZIP 파일이 생성됩니다 ( 이 Github 문제 에서 볼 수 있듯이 ).
디렉토리를 압축 할 수있는 또 다른 더 나은 Node.js 옵션이 있습니까?
편집 : 아카이버 를 사용하여 끝났습니다.
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
명령은 압축 파일에 현재 작업 디렉토리의 모든 상위 폴더 계층을 포함합니다. 이것은 당신에게 괜찮을지도 모르지만 그것은 나를위한 것이 아닙니다. 또한 child_process의 현재 작업 디렉토리를 변경해도 결과에 영향을 미치지 않습니다. 2) 이 문제를 극복하려면을 사용 pushd
하여 zip 및을 폴더로 이동해야 zip -r
하지만 pushd
/ bin / sh가 아닌 bash에 내장되어 있으므로 / bin / bash도 사용해야합니다. 내 특정한 경우에는 이것이 불가능했습니다. 그냥주의하세요.
child_process.exec
API를 사용하면 명령을 실행할 cwd를 지정할 수 있습니다. CWD를 변경하면 상위 폴더 계층 문제가 해결됩니다. 또한 필요하지 않은 문제도 해결합니다 pushd
. 나는 child_process를 완전히 추천합니다.