2016-12-07 79 views
0

源代码用于2个项目,每个项目都有一些通用代码。 我想通过吞咽任务有条件地忽略模块/文件夹/目录。有条件地忽略gulp.src中的文件

当我做下面的它完美

return gulp.src(
    config.appMarkupFiles 
    '!app/settings', '!app/settings/**' 
) 

不过,我想有条件做到这一点。 我也尝试了使用gulp-filter的下面的代码,这对我不起作用。

var isQA = $.yargs.argv.stage === 'qa'; 

var filterSettings = $.filter(['!app/settings{, /**}']) 
return gulp.src(
    config.appMarkupFiles 
) 
.pipe(($.if(isQA,$.filter(filterSettings))) 

folder structure for reference only.

回答

1

你gulpfile仅仅是JavaScript的,所以你可以使用ternary operatorgulp.src()有条件排除文件:

var isQA = $.yargs.argv.stage === 'qa'; 

gulp.task('default', function() { 
    return gulp.src([config.appMarkupFiles].concat((isQA) ? ['!app/settings{,/**}'] : [])) 
    .pipe(gulp.dest('dist')); 
}); 

使用gulp-filter作品,但你必须在你的代码中有两处错误:

  1. 有一个不必要的空间在!app/settings{, /**}
  2. 您申请$.filter两次。

下面是使用gulp-filter工作的解决方案:

var isQA = $.yargs.argv.stage === 'qa'; 

gulp.task('default', function() { 
    return gulp.src(config.appMarkupFiles) 
    .pipe($.if(isQA, $.filter(['!app/settings{,/**}']))) 
    .pipe(gulp.dest('dist')); 
}); 
+0

出于某种原因,这是行不通的。我尝试了你建议的选项。还没有运气。 –

+0

如果你想让我帮你,你必须要更具体。 –

+0

它不会忽略所有标记文件。不仅仅是来自设置文件夹。如果我评论它,那么所有的标记文件将被处理为www。 –