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

Ignore certain files while packing a .tar.gz file in node JS

所以我已经从 "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();
    }
});

有人可以告诉我如何编写该部分才能正常工作吗?不胜感激

您获得了用作过滤器的 ignore 函数,例如,您在代码中过滤了所有具有 .pdf 扩展名的文件。

您可以重写此函数以过滤所有文件而不是您的特定文件:

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

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

我认为 entriesignore 的组合没有像您预期的那样工作。如果您在 entries 中包含一个文件,它将被添加到您的存档中,无论 ignore 做什么。

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