我的文件夹结构如下所示:
- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips
Run Code Online (Sandbox Code Playgroud)
对于projects(proj1,proj2和proj3)中的每个文件夹,我想压缩每个文件夹的内容并生成proj1.zip,proj2.zip并proj3.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'));
});
Run Code Online (Sandbox Code Playgroud)
但是我如何为项目中的每个文件夹执行此类任务?我可以把所有的文件夹都压缩gulp.src('./projects/*')但是呢?
老问题我知道,我很新闻,所以这可能被认为是一个黑客,但我一直在尝试做你想做的事情,我最终得到了这个.
我的文件结构是这样的:
proj
proj/dist
proj/dist/sub01
proj/dist/sub02
proj/dist/sub03
proj/zipped
Run Code Online (Sandbox Code Playgroud)
而我的任务最终结果如下:
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;
}));
});
Run Code Online (Sandbox Code Playgroud)
它抓取所有第一级内容./dist作为其源,然后将其管道gulp-foreach.
gulp-foreach查看每个项目,我使用普通的javascript substr()来获取当前项目的名称,我将其存储为变量.
最后,我src使用存储的fileName var 设置一个新的,并将结果传递给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
Run Code Online (Sandbox Code Playgroud)
再说一次,我距离成为一名专家只有一百万英里,但这对我有用,如果我理解这个问题可能对你有用,或者至少给你一些想法.
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |