2014-09-19 7 views
6

ich versuche, von Grunt zu schalten schlingen und ich habe ein Problem:Wie in Stream mit Gulp ersetzen?

I

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

Wenn meine Konsole Argument „--remove“ zwei Ströme aus zwei Dateien lesen fehlt Ich habe kein Problem zu verketten diese Ströme

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

jedoch, wenn ‚--remove‘ ist wahr, ich will Injektion löschen, mit anderen Worten, subtrahieren injectionStream von filestream.

Ich habe versucht:

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

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

Es funktioniert mit Streichern, aber ich kann mit Strömen von Dateien lesen Sie keinen Erfolg haben. Kann mir jemand einen kleinen Hinweis geben?

Und vielleicht ist es ein falsches Werkzeug für die Generierung Aufgabe und ich sollte mit Grunt und \ oder andere Tools wie yo, etc bleiben?
Vielen Dank für Ihre Zeit!

Antwort

9

Nice work :) Sieht aus wie gulp-replace könnte ein einfacher Weg für Folk, hier von Google kommen ..

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

Ich habe endlich die Lösung gefunden!

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

...

Es dauerte eine Weile, aber ich bin glücklich, es vorbei ist.

Danke

+0

schluck nicht so einfach ist, wie es sein sollte zu verwenden :) –

+0

Sie könnten auch https://github.com/eugeneware/replacestream verwenden –

+0

Danke, Alex. Werde einen Blick darauf werfen. – Svitlana