2014-09-19 11 views
6

Cerco di passare da Grunt a Gulp e ho un problema:Come sostituire in streaming usando Gulp?

ho letto due flussi da due file

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

Se la mia tesi console "--remove" è assente non ho alcun problema a concatenare questi flussi

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

Tuttavia quando '--remove' è vero che voglio eliminare l'iniezione, in altre parole, sottrarre injectionStream da FileStream.

ho provato:

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

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

Funziona con le stringhe, ma non può avere successo con i flussi letti dal file. Qualcuno può darmi un piccolo suggerimento?

E forse è uno strumento non corretto per il compito di generazione e dovrei stare con Grunt e \ o altri strumenti come yo, etc?
Grazie per il vostro tempo!

risposta

9

Bel lavoro :) Sembra gulp-replace potrebbe essere un modo più facile per la gente venire qui da 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

Ho finalmente trovato la soluzione!

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

...

Ci sono voluti un po ', ma sono felice che sia finita.

Grazie

+0

sorso non è così facile da usare come dovrebbe essere :) –

+0

potresti anche utilizzare https://github.com/eugeneware/replacestream –

+0

Grazie, Alex. Dare un'occhiata. – Svitlana