我的文件夹结构如下所示:
- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips对于projects中的每个文件夹(proj1、proj2和proj3),我希望压缩每个文件夹的内容,并在/zips文件夹中生成proj1.zip、proj2.zip和proj3.zip。
下面的示例函数从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/*')拉链,然后呢?
发布于 2015-10-16 15:06:28
老掉牙的问题,我知道,我是很新的吞咽,所以这可能被认为是一个黑客,但我只是一直在尝试做你的目标,我结束了这个。
我的文件结构是:
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()获取当前项的名称,我将其存储为变量。
最后,我使用存储的src变量设置了一个新的fileName,并将结果传递给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再一次,我离成为一名专家还有一百万英里,但这对我来说是有效的,如果我明白了,这个问题可能也适用于你,或者至少给你一些想法。
https://stackoverflow.com/questions/32256964
复制相似问题