从zip文件中删除父文件夹

时间:2018-03-21 16:14:54

标签: javascript zip

给定一个具有以下结构的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,我离拉链专家不远,所以我想我会把它放在那里......

1 个答案:

答案 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);