给定一个具有以下结构的zip文件:
/unwantedParentFolder
/wantedFolder/**/*
/wanted.files
是否有一种简单的方法可以“重组”它,以便剥离/unwantedParentFolder
。 e.g:
/wantedFolder/**/*
/wanted.files
理想情况下单独使用Javascript,虽然我可能会使常见的Linux命令工作。
有关更多信息:我正在使用lambda(因此是Javascript)将Gitlab和AWS CodeBuild粘合在一起。 Gitlab有一个api来获取当前的repo文件作为zip,CodeBuild可以从zip构建。不幸的是,Gitlab认为repo应该在根目录下的文件夹中,而CodeBuild希望repo成为root。
目前最好的方法是打包linux zip工具,将所有内容解压缩到temp文件夹,移动一个文件夹并重新压缩。但它看起来有点hackey,我离拉链专家不远,所以我想我会把它放在那里......
答案 0 :(得分:0)
尽管已经找到它,但我显然没有对JSZip的文档进行过多考察(正如@LGSon所建议的那样)!
https://stuk.github.io/jszip/documentation/api_jszip/generate_async.html正是如此:
const data = fs.readFileSync('file');
const zip = await JSZip.loadAsync(data);
const rerooted = await zip
.folder('unwantedParentFolder')
.generateAsync({ type:"nodebuffer" });
fs.writeFileSync('fixed.zip', rerooted);