【问题标题】:Append directories inside a Zip in nodejs在nodejs中的Zip内附加目录
【发布时间】:2015-05-21 09:00:51
【问题描述】:

我正在尝试使用 node-archiver 在 zip 中添加一个入口目录。

当我只添加一个文件时,就像:

var fs = require('fs');
var archiver = require('archiver');

var output = fs.createWriteStream(__dirname + '/example-output.zip');
var archive = archiver('zip');

output.on('close', function() {
  console.log('archiver has been finalized and the output file descriptor has closed.');
});

archive.on('error', function(err) {
  throw err;
});

archive.pipe(output);

var file1 = __dirname + '/fixtures/file1.txt';

archive
  .append(fs.createReadStream(file1), { name: 'file1.txt' })
  .finalize();

而且效果很好……但是如果我想添加一个目录,我不知道该怎么做。

ps。是的,我可以压缩入口目录,然后像文件一样添加,然后解压缩......但这不是一个好的解决方案

【问题讨论】:

    标签: node.js zip fs


    【解决方案1】:

    看看bulk 选项。这是一个修改后的示例from the archiver docs。 cwd 是上下文根,src 是全局模式。 ** 将以拉取所有文件为例。由于它基本上只是流,因此您可以像下面的示例一样将它们链接在一起。

    var fs = require('fs');
    
    var archiver = require('archiver');
    
    var output = fs.createWriteStream(__dirname + '/bulk-output.zip');
    var archive = archiver('zip');
    
    output.on('close', function () {
        console.log(archive.pointer() + ' total bytes');
        console.log('archiver has been finalized and the output file descriptor has closed.');
    });
    
    archive.on('error', function (err) {
        throw err;
    });
    
    archive.pipe(output);
    
    archive
        .append(fs.createReadStream('./file1.txt'), {name: 'file1.txt'})
        //append more files here
        .bulk([{
            expand: true,
            cwd: './',
            src: ['**/*.js']    //src takes an array of directory glob patterns, can specify multiple entries here
        }]);
    
    archive.finalize();
    

    【讨论】:

    • 谢谢贾斯汀。这不正是我想要的吗?
    【解决方案2】:

    我用 ncp 包 https://www.npmjs.com/package/ncp 和存档器解决了这个问题,我想这更容易。

    【讨论】:

      【解决方案3】:

      首先,添加 emtpy 类别没有意义。

      第二,archive.append(source, EntryData)。 EntryData 中的名称解释为“设置条目名称,包括内部路径。”允许您添加路径。

      例如:'./test/file1.txt'。

      【讨论】:

        猜你喜欢
        • 2013-11-12
        • 2010-10-25
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多