首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何压缩生成多个.zip文件的多个文件夹?

如何压缩生成多个.zip文件的多个文件夹?
EN

Stack Overflow用户
提问于 2015-08-27 18:31:32
回答 1查看 1.8K关注 0票数 2

我的文件夹结构如下所示:

代码语言:javascript
复制
- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips

对于projects中的每个文件夹(proj1、proj2和proj3),我希望压缩每个文件夹的内容,并在/zips文件夹中生成proj1.zipproj2.zipproj3.zip

下面的示例函数从proj1文件夹生成单个zip文件

代码语言:javascript
复制
zip = require('gulp-zip');
gulp.task('default', function () {
    return gulp.src('./projects/proj1/*')
        .pipe(zip('proj1.zip'))
        .pipe(gulp.dest('./zips'));
});

但是如何对项目中的每个文件夹执行这样的任务呢?我可以让所有的文件夹通过gulp.src('./projects/*')拉链,然后呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 15:06:28

老掉牙的问题,我知道,我是很新的吞咽,所以这可能被认为是一个黑客,但我只是一直在尝试做你的目标,我结束了这个。

我的文件结构是:

代码语言:javascript
复制
proj
proj/dist
proj/dist/sub01
proj/dist/sub02
proj/dist/sub03
proj/zipped

我的任务就这样结束了:

代码语言:javascript
复制
var gulp = require("gulp");
var foreach = require("gulp-foreach");
var zip = require("gulp-zip");

gulp.task("zip-dist", function(){
   return gulp.src("./dist/*")
       .pipe(foreach(function(stream, file){
          var fileName = file.path.substr(file.path.lastIndexOf("/")+1);
          gulp.src("./dist/"+fileName+"/**/*")
              .pipe(zip(fileName+".zip"))
              .pipe(gulp.dest("./zipped"));

          return stream;
       }));
});

它获取./dist的所有第一级内容作为其源,然后将其输送到gulp-foreach

gulp-foreach查看每一项,并使用普通的javascript substr()获取当前项的名称,我将其存储为变量。

最后,我使用存储的src变量设置了一个新的fileName,并将结果传递给gulp-zip,再次使用存储的变量作为压缩文件的名称。

其结果是这样的结构:

代码语言:javascript
复制
proj
proj/dist
proj/dist/sub01
proj/dist/sub02
proj/dist/sub03
proj/zipped
proj/zipped/sub01.zip
proj/zipped/sub02.zip
proj/zipped/sub03.zip

再一次,我离成为一名专家还有一百万英里,但这对我来说是有效的,如果我明白了,这个问题可能也适用于你,或者至少给你一些想法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32256964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档