2014-09-19 4 views
6

Я пытаюсь перейти от 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» истинно Я хочу удалить инъекции, другими словами, вычесть injectionStream из FileStream.

Я пробовал:

var es = require('event-stream'); 
es.replace() 

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

Он работает со строками, но я не могу добиться успеха с потоками для чтения из файлов. Может кто-нибудь дать мне небольшой намек?

Возможно, это неправильный инструмент для генерации, и я должен остаться с Grunt и \ или другими инструментами, такими как yo и т. Д.?
Спасибо за ваше время!

ответ

9

Хорошая работа :) Похоже gulp-replace может быть проще для народа, приезжающих сюда из Google ..

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)) 

...

Потребовалось некоторое время, но я счастлив, что все кончено.

Спасибо

+0

глотком не так просто, как это должно быть :) –

+0

вы также можете использовать https://github.com/eugeneware/replacestream –

+0

Спасибо, Алекс. Посмотрите. – Svitlana