2015-12-11 40 views
1

我這有一口任務:如何讓gulp-replace隻影響某些文件?

var gulp = require('gulp'); 

gulp.task('myStaticFiles', function() { 
    gulp.src('staticSite/**') 
     .pipe(gulp.dest('build/site')); 
}); 

之間srcdest我想做一個gulp-replace(或類似)。我目前有:

var gulp = require('gulp'); 
var replace = require('gulp-replace'); 

gulp.task('myStaticFiles', function() { 
    gulp.src('staticSite/**') 
     .pipe(replace(/mypattern/, "replacevalue")) 
     .pipe(gulp.dest('build/site')); 
}); 

然而,這會影響在管道的所有文件。我想:

  • replace流中的某些文件(按名稱的特定文件或文件具有一定的擴展名);和
  • 所有文件到達gulp.dest

我該怎麼做?

The gulp-replace documentation對此沒有任何意見,所以也許我只是缺乏一些關於做這種事情的「吞噬方式」的知識?

回答

2

試試這個辦法,使用gulp-if

(function() { 

    'use strict'; 

    var gulp = require('gulp'), 
     gulpif = require('gulp-if'), 
     replace = require('gulp-replace'); 

    var condition = function (file) { 
    // TODO: add business logic 
    return true; 
    } 

    gulp.task('myStaticFiles', function() { 
    return gulp 
     .src('staticSite/**') 
     .pipe(gulpif(condition, replace(/mypattern/, 'replacevalue'))) 
     .pipe(gulp.dest('build/site')); 
    }); 

})(); 
+0

沒錯,你曾評論的全是真的:)而你給了我新的信息,我會去與一飲而盡,如果結合這個插件。其實,它不是很優雅,但很容易:不能花更多時間「爲你調試」:D將在幾分鐘內編輯我的答案。 – avcajaraville

+0

感謝您的幫助。您的新答案狀態符合我的(預期)問題。如果所有這些都有效,我會稍後再嘗試驗證。 (PS。我清除了以前的評論,因爲它們已經過時了。) – Jeroen