【问题标题】:How to have gulp-replace affect only certain files?如何让 gulp-replace 仅影响某些文件?
【发布时间】:2015-12-11 08:42:26
【问题描述】:

我有这个 gulp 任务:

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 gulp-replace


    【解决方案1】:

    试试这个方法,使用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' ) );
      });
    
    })();
    

    【讨论】:

    • 没错,你评论的都是真的 :) 有了你给我的新信息,我将把这个插件与 gulp-if 结合起来。实际上,它不是很优雅,但很简单:不能花更多时间“为您调试”:D 将在几分钟内编辑我的答案。
    • 感谢您的帮助。您的新答案状态与我的(预期)问题相匹配。如果所有这些工作正常,我会稍后尝试验证。 (PS。我已经清除了我以前的 cmets,因为它们已经过时了。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多