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

时间:2016-12-07 09:01:55

标签: angularjs gulp glob gulp-filter node-glob

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

当我关注它时效果很好

A

但是,我想有条件地这样做。 我还尝试使用gulp-filter的以下代码,这对我不起作用。

git checkout C
git rebase A
git checkout A
git merge C

# and optional to clean up no longer needed branches
git branch -d C
git push origin :C

folder structure for reference only.

1 个答案:

答案 0 :(得分:1)

您的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. 中有不必要的空格
  3. 您已经两次申请$.filter
  4. 以下是使用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'));
    });