首页 > 解决方案 > node-archiver : 提取时获取重复的父 zip

问题描述

我在下面写了压缩目录:

const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
    const archive = archiver('zip');
    const stream = fs.createWriteStream(destDir);
    return new Promise((resolve, reject) => {
    archive
      .directory(sourceDir, false)
      .on('error', err => reject(err))
      .pipe(stream)
    ;

    stream.on('close', () => resolve());
    archive.finalize();
  });
}

在压缩我的目录之前看起来像这样:

当我解压缩存档(称为yayy.zip)时,其中包含以下文件:

yayy.zip里面调用了一个无效文件。我怎样才能避免这种情况?

标签: javascriptnode.jsnode-archiverarchiverjs

解决方案


代替directory,您可以使用glob方法指定要压缩的文件。它需要第二个参数,您可以在其中指定要忽略的文件。

const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
    const archive = archiver('zip');
    const stream = fs.createWriteStream(destDir);
    return new Promise((resolve, reject) => {
    archive
      .on('error', err => reject(err))
      .pipe(stream)
      .glob(
        '**/*',
        {cwd: sourceDir, ignore: filename}
      )
    ;

    stream.on('close', () => resolve());
    archive.finalize();
  });
}

推荐阅读