我的文件夹结构如下所示:
- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips
对于projects
(proj1,proj2和proj3)中的每个文件夹,我想压缩每个文件夹的内容,并在proj1.zip
,proj2.zip
和proj3.zip
中生成{ {1}}文件夹。
以下示例函数从/zips
文件夹
proj1
但我如何为项目中的每个文件夹执行此类任务?我可以通过zip = require('gulp-zip');
gulp.task('default', function () {
return gulp.src('./projects/proj1/*')
.pipe(zip('proj1.zip'))
.pipe(gulp.dest('./zips'));
});
将所有文件夹压缩,但是呢?
答案 0 :(得分:5)
老问题我知道并且我很新闻,所以这可能被认为是一个黑客,但我一直在尝试做你想做的事情,我最终得到了这个。
我的文件结构如下:
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
,并使用存储的var再次将结果传递给gulp-zip
作为压缩文件的名称。
结果是一个如下所示的结构:
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
同样,我距离成为一名专家只有一百万英里,但这对我有用,如果我理解这个问题也适合你,或者至少可以给你一些想法。