2014-02-12 4 views
31

Ich möchte einige Dateien mit 'Kaffee' verarbeiten, fügen Sie einige js-Dateien, concat und minimieren.Wie src Dateien in der Mitte einer Leitung hinzufügen

Dies funktioniert nicht, nicht Kaffee auf den regulären js Dateien:

gulp.task 'build-js', -> 
    gulp.src([ 
     "bower_components/mbdev-core/dist/js/db.js" 
     "bower_components/mbdev-core/dist/js/utils.js" 
     "src/js/config/app.coffee" 
     "src/js/config/app-db.coffee"    
     "src/js/accounts/accounts.coffee" 
     "src/js/budget_items/budget_items.coffee" 
     "src/js/line_items/line_items.coffee" 
     "src/js/misc/misc.coffee" 
     "src/js/reports/report_generators.coffee" 
     "src/js/reports/reports.coffee" 
    ]) 
    .pipe(coffee()).on('error', gutil.log) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('public/js')) 

Gibt es eine Möglichkeit, um Dateien nach dem Kaffee Teil hinzufügen?

+0

Sie können versuchen, 'combine' aus dem Modul gulp-util zu verwenden. – terinjokes

Antwort

54

Sie müssen keine Dateien in den ursprünglichen src hinzuzufügen, sondern Kaffee zu verwenden nur "wenn" ...

So verwenden gulp-if

gulp.task('task', function() { 
    gulp.src('./stuff/*') 
    .pipe(gulpif(/[.]coffee$/, coffee())) 
    .pipe(gulp.dest('./dist/')); 
}); 

Siehe here mehr über gulp- ob.

+0

Das ist großartig. Ich wusste nicht, Schluck - wenn all diese zusätzlichen Funktionen hatte. Du kannst viel damit machen! – OverZealous

+0

Ja, ich lerne es zu lieben und trashte eine Reihe meiner eigenen Affenhelfer :) –

+0

Eigentlich habe ich ein Problem mit Gulpif. Link zur Ausgabe: https://github.com/robrich/gulp-if/issues/40 Wenn ich Uhr, und mit Kompilierung Fehler, bricht es Watch-Prozess :( –

9

gulp.src Ströme sind Durchleitungen, so dass Sie sie an jedem beliebigen Punkt in der Pipeline

gulp.task 'build-js', -> 
    gulp.src([ 
     "src/js/config/app.coffee" 
     "src/js/config/app-db.coffee"    
     "src/js/accounts/accounts.coffee" 
     "src/js/budget_items/budget_items.coffee" 
     "src/js/line_items/line_items.coffee" 
     "src/js/misc/misc.coffee" 
     "src/js/reports/report_generators.coffee" 
     "src/js/reports/reports.coffee" 
    ]) 
    .pipe(coffee()).on('error', gutil.log) 
    .pipe(gulp.src([ 
     "bower_components/mbdev-core/dist/js/db.js" 
     "bower_components/mbdev-core/dist/js/utils.js" 
    ])) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('public/js')) 
+5

Das wäre toll, aber es funktioniert nicht für mich. Ich bekomme nur die Dateien von der letzten gulp.src – chmanie

+3

Ich habe das gleiche Problem, wo die letzte gulp.src gewinnt, ist dies ein Bug oder eine spezielle Schluck-Option? – Nick

+4

Ich habe dies an anderen Orten erwähnt, aber gulp scheint gulp.src streams nicht mehr so ​​zu behandeln – joemaller

17

@Contra ‚s Antwort für mich nicht funktioniert hinzufügen. Neuer Stream ersetzt den alten, nicht zu ihnen gesellt.

Sie sollen Ströme auf diese Weise kombinieren:

es = require("event-stream") 

es.concat(
    gulp.src('*.coffee') 
    .pipe(coffee()), 
    gulp.src('*.js') 
).pipe(concat('all.js')) 
.pipe(gulp.dest('.')) 

Und Sie können offizielle Führer dazu hier Using multiple sources in one task

Wenn Sie kümmern sich um die Ordnung innerhalb des Stroms, sollten Sie streamqueue statt event-stream verwenden sehen

+0

Streamqueue behandelt Fehler nicht richtig, vor allem mit Dingen wie gulp-jshint: -/ – Yoshokatana

+1

Wird dies nicht auch verlieren die Datei Reihenfolge, wenn sie in der Reihenfolge von das ursprüngliche Dateiarray? – phazei

+0

Die Antwort von Contra ist gültig ab gulp v 4.0.0 – bogatyrjov

14

Sie können die gulp-add-src Plugin:

addsrc = require 'gulp-add-src' 

gulp.task 'build-js', -> 
    gulp.src(['src/coffee/*.coffee']) 
    .pipe(coffee()).on('error', gutil.log) 
    .pipe(addsrc(['src/js/somefile.js', 'src/js/otherfile.js'])) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('public/js')) 
+1

Was ist, wenn ich * .js Dateien als erste in der Reihenfolge brauche? –

+0

Versuchen Sie Schluck-Reihenfolge. –

+2

Dieses Plugin ist veraltet. – drinchev