使用grunt-contrib-compress将多个文件夹压缩成多个zip文件

时间:2015-02-03 19:37:58

标签: gruntjs grunt-contrib-compress

我有这个目录结构:

asdf
 |---a
 |   |---files
 |   |---folders
 |
 |---b
     |---files
     |---folders

我想使用grunt-contrib-compress(我想是我想要的那个),最终得到2个zip文件a.zipb.zip

 a.zip
 |---files
 |---folders

 b.zip
 |---files
 |---folders

有没有办法做到这一点?我无法找到任何关于有多个输出的东西(无论它是否可能都无处可寻)。关于compress的唯一其他问题是关于制作没有根文件夹的zip(我也想要这个)

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:2)

看起来grunt-contrib-compress不是最好的解决方案。解决您问题的任务是grunt-zip-directories

对于您的特定情况,任务配置应为:

zip_directories: {
    asdf: {
        files: [{
            filter: 'isDirectory',
            expand: true,
            cwd: './asdf',
            dest: './zip',
            src: '*'
        }]
    }
}

此任务的作用是,它将“./asdf”的所有子目录都拉到单独的zip存档中,然后将存档放到“./zip”文件夹中。所以执行后你应该在'./zip'目录中有两个文件: a.zip b.zip ,正如你在问题中提到的那样。

答案 1 :(得分:0)

压缩任务不提供开箱即用的功能,但使用动态配置有很好的解决方法:

grunt.dynamicCompress = function (path)
{
    var target = grunt.file.expand(path);

    for (var i in target)
    {
        grunt.config.set('compress.' + target[i],
        {
            src:
            [
                target[i] + '/**'
            ],
            options:
            {
                archive: 'your-dist-folder/' + target[i].toLowerCase() + '.zip'
            }
        });
    }
};

使用目标路径运行它:

grunt.dynamicCompress('your-target-folder/*');