在节点JS中打包.tar.gz文件时忽略某些文件

时间:2018-08-27 12:26:51

标签: javascript node.js tar packing

因此,我已经有了“ targz”包中的一些代码,该代码将所有文件打包在目录中。现在,我看到您可以以某种方式忽略文件(而不是打包文件),我也想这样做。我只是不知道如何编写忽略部分。这是我的代码:

targz.compress({
    src: "./" + this.sourcePath + "/",
    dest: "./" + this.targetPath + "/" + "result.tar.gz",
    tar: {
        entries: this.fileArray,
        ignore: function(name) {
            return path.extname(name) === '.pdf'
        }
    },
    gz: {
        level: 6,
        memLevel: 6,
    }
}, function(err){
    if(err) {
        console.log(err);
        reject(err);
    } else {
        resolve();
    }
});

有人可以告诉我如何编写该节,以便它起作用吗?不胜感激

2 个答案:

答案 0 :(得分:1)

我认为entriesignore的组合无法正常工作。如果您在entries中包含文件,则无论ignore做什么,该文件都会被添加到存档中。

我认为您无需手动指定entries,因为您已经指定了src。因此,删除entries应该可以解决问题。

答案 1 :(得分:0)

您获得了ignore函数,该函数充当过滤器,例如,从您的代码中,您正在过滤所有扩展名为.pdf的文件。

您可以重写此功能以过滤所有文件,而不是特定文件:

ignore: function filter(name) {
  const specificFilesToIgnore = ['some_specific.pdf', 'other_specific.pdf'];

  return path.extname(file) === '.pdf' && !specificFilesToIgnore.includes(name); 
}