【问题标题】:Conditionally Ignore files in gulp.src有条件地忽略 gulp.src 中的文件
【发布时间】:2016-12-07 09:01:54
【问题描述】:

源代码用于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)))

【问题讨论】:

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


    【解决方案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

    这是一个使用 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'));
    });
    

    【讨论】:

    • 由于某种原因,这不起作用。我尝试了您建议的两个选项。还没有运气。
    • 如果你想让我帮助你,你必须更具体一点。
    • 它不会忽略所有的标记文件。不仅仅是来自设置文件夹。如果我评论它,那么所有标记文件都会被处理到 www.
    • 这没什么用。编辑您的问题以准确描述您的问题(当前代码、现有目录结构、预期结果、实际结果)。见minimal reproducible example
    猜你喜欢
    • 2015-12-25
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多