如何使用Gulp替换流中的内容?

7

我尝试从Grunt切换到Gulp,但遇到问题:

我从两个文件中读取了两个流。

var fileStream = gulp.src(file);
var injectionStream = gulp.src(injection)
.pipe(replace('#class-name#', argv.cname));

如果我的控制台参数“--remove”不存在,我可以毫无问题地连接这些流。
.pipe(concat('animation.styl'))
.pipe(gulp.dest('./dist'))

然而,当'--remove'为真时,我想删除注入,换句话说,从fileStream中减去injectionStream。
我尝试过:
var es = require('event-stream');
es.replace()

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

它适用于字符串,但我无法成功处理从文件读取的流。有人能给我一个小提示吗?

也许这并不是生成任务的正确工具,我应该使用Grunt和/或其他类似yo的工具?
感谢您的时间!

2个回答

11

干得好 :) 看起来从Google搜索到这里的人可能会觉得gulp-replace更容易些。

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

gulp.task('templates', function(){
  gulp.src(['file.txt'])
    .pipe(replace(/foo(.{3})/g, '$1foo'))
    .pipe(gulp.dest('build/file.txt'));
});

2

我终于找到解决方案了!

fs.readFile(injectionFile, 'utf8', function (err, injStr) {
injStr = injStr.replace(/svv/g, cname);

fileStream
.pipe(gulpif(rm!=true,injectString.append(injStr),replace(injStr,'')))
.pipe(concat(initialFile))
.pipe(gulp.dest(animation))

经过一段时间的努力,我很高兴终于完成了。

谢谢你。


1
gulp 的使用并不像它应该的那么容易 :) - Alexander Mills
谢谢,Alex。我会看一下的。 - Svitlana
1
从我短暂的Node流探索中发现,Gulp的流API与Node核心的流API不同,这真的很烦人。 - Alexander Mills

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接