0

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

当我遵循它时,它可以完美地工作

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

文件夹结构仅供参考。

4

1 回答 1

1

您的 gulpfile 只是 JavaScript,因此您可以使用三元运算符有条件地排除以下文件 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. 你申请$.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'));
});
于 2016-12-07T09:25:48.263 回答