从Gulp-Zip任务foreach循环中排除文件夹

时间:2018-01-23 16:37:31

标签: javascript node.js gulp

我使用gulp-zip和gulp for-each来压缩许多文件夹。这些包含名为_js,_css和_raw的其他文件夹。我希望从输出压缩文件中排除以下划线开头的任何文件夹。



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




1 个答案:

答案 0 :(得分:0)

最后想出来,这是我的解决方案:

gulp.task('zipAll', function(){
    return gulp.src('src/*')
    .pipe(foreach(function(stream, file){
        var fileName = file.path.substr(file.path.lastIndexOf('/')+1);
        gulp.src(['src/' + fileName + '/**/*', '!src/' + fileName + '/_sass{,/**}', '!src/' + fileName + '/_js{,/**}', '!src/' + fileName + '/_raw{,/**}'])
        .pipe(zip(fileName + '.zip'))
        .pipe(gulp.dest('dist'));
        return stream;
    }));
});