2014-09-19 20 views
6

próbuję przełączyć z chrząknięcie haustem i mam problem:Jak wymienić w strumieniu za pomocą Gulp?

czytałem dwa strumienie z dwóch plików

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

Jeśli moja konsola argument „--remove” jest nieobecny mam żadnego problemu złączyć te strumienie

.pipe(concat('animation.styl')) 
.pipe(gulp.dest('./dist')) 

jednak gdy „--remove” jest prawdą chcę usunąć zastrzyk, innymi słowy, odejmować injectionStream z FILESTREAM.

Próbowałem:

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

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

Współpracuje z łańcuchami, ale nie może się udać ze strumieniami odczytanych z plikami. Czy ktoś może mi podać małą wskazówkę?

A może to niewłaściwe narzędzie do zadania generowania i powinienem pozostać przy Grunt i \ lub innych narzędziach, takich jak yo itp?
Dziękuję za poświęcony czas!

Odpowiedz

9

Dobra robota :) Wygląda gulp-replace może być łatwiejszy sposób dla ludzi pochodzących tutaj z 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

W końcu znalazłem rozwiązanie!

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

...

Zajęło to trochę czasu, ale cieszę się, że to koniec.

Dziękuję

+0

łyk nie jest tak łatwy w użyciu jak powinno być :) –

+0

można również użyć https://github.com/eugeneware/replacestream –

+0

Dziękuję, Alex. Przyjrzy się. – Svitlana

Powiązane problemy