如何让gulp-replace只影响某些文件?

时间:2015-12-11 08:42:27

标签: gulp 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对此没有任何意义,所以也许我只是缺乏一些关于" gulp方式的知识"做这种事情?

1 个答案:

答案 0 :(得分: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' ) );
  });

})();