有条件地忽略 gulp.src 中的文件

Conditionally Ignore files in gulp.src

源代码用于2个项目,每个项目都有一些通用代码。 我想通过 gulp 任务有条件地忽略 module/folder/directory。

当我遵循它时,它完美无缺

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)))

你的 gulpfile 只是 JavaScript 所以你可以使用 ternary operator 有条件地排除 gulp.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. 中有不必要的 space
  3. 您正在申请 $.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'));
});