2016-12-07 83 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。 –