gulp - 如何在 gulp 中压缩多个文件夹生成多个 .zip 文件?

标签 gulp

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

- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips

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

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

zip = require('gulp-zip');
gulp.task('default', function () {
    return gulp.src('./projects/proj1/*')
        .pipe(zip('proj1.zip'))
        .pipe(gulp.dest('./zips'));
});

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

最佳答案

我知道的老问题,而且我对 gulp 还很陌生,所以这可能被认为是一种黑客攻击,但我一直在尝试做你想做的事情,最后我得到了这个。

我的文件结构是这样的:

proj
proj/dist
proj/dist/sub01
proj/dist/sub02
proj/dist/sub03
proj/zipped

我的任务最终是这样的:

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() 来获取我存储为变量的当前项目的名称。

最后,我使用存储的 fileName var 设置了一个新的 src 并将结果通过管道传输到 gulp-zip再次使用存储的 var 作为压缩文件的名称。

结果是一个如下所示的结构:

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

再说一次,我距离成为专家还有一百万英里,但这对我有用,如果我理解这个问题也可能对你有用,或者至少给你一些想法。

关于gulp - 如何在 gulp 中压缩多个文件夹生成多个 .zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256964/

相关文章:

javascript - Controller 的 minifed 版本出错 - angularjs?

javascript - 当我更改前端(Angularjs) Controller 文件时,Gulp 重新启动服务器

node.js - gulp 中的 es.merge 用法 : Object #<Stream> has no method 'end'

javascript - 停止 Gulp 删除未使用的 Javascript 函数

javascript - 使用 `react-bootstrap` 和 `npm`

npm - 如何从 gulpfile.js 安装所有必需的模块

node.js - ../deps/v8/src/api.cc 中的 fatal error ,gulp watch 时的第 1197 行

node.js - 将不需要的功能(fdescribe、describe.only)检测为 Gulp 任务

javascript - 使用 Gulp-Notify 在终端中显示项目文件夹路径,而不是硬盘上项目的整个路径

angularjs - 生产服务器上缺少 html 元素