2016-04-20 16 views
1

Im Moment habe ich zwei Aufgaben: templates und js. templates muss zuerst ausgeführt werden, damit Änderungen von js übernommen werden. Ich mag diese kombinieren, die Zwischendatei zu beseitigen, so dass die Aufgabe wie folgt funktioniert:Wie kann ich diese beiden Gulp-Aufgaben in einem einzigen kombinieren?

  1. Compile und verketten Vorlagen in ein einziges Stück von JS
  2. Concatenate dass Brocken mit dem Rest meiner Anwendung JS Code
  3. Ausgang das ganze als eine einzige Datei

wie kann ich das tun?

Hier ist mein aktueller Code:

var gulp   = require('gulp'); 
var handlebars = require('gulp-handlebars'); 
var concat  = require('gulp-concat'); 
var wrap   = require('gulp-wrap'); 
var declare  = require('gulp-declare'); 

// Compile Handlebars templates into JS 
gulp.task('templates', function() { 
    return gulp.src('./templates/*.hbs') 
    .pipe(handlebars({ 
     handlebars: require('handlebars') 
    })) 
    .pipe(wrap('Handlebars.template(<%= contents %>)')) 
    .pipe(declare({ 
     namespace: 'templates', 
     noRedeclare: true, 
    })) 
    .pipe(concat('templates.js')) 
    .pipe(gulp.dest('./js/')); 
}); 

// Concatenate and minify application JS 
gulp.task('js', function() { 
    return gulp.src('./js/*.js') 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('./dist/js')); 

Antwort

-1

Für mich ist die easyest und saubere Weise eine Aufgabe nach der andere mit

gulp.task('js', ['templates'], function(){ 
.... 

Auf diese Weise die js Aufgabe muß die Ausführung von Vorlagen zu nennen ist Aufgabe

Die Kompilation und die finale Concat in 2 separaten Aufgaben halten, ist es nicht so schlecht für mich.

Lassen Sie mich wissen, ob es für Sie keine gangbare Lösung ist

EDIT

in einer einzigen Aufgabe können Sie versuchen,

merge-Stream und tun

var merge = require('merge-stream'); 
gulp.task('templates', function() { 
    var jsStream = gulp.src('./js/*.js') 
    .pipe(concat('all.js')); 
    var templateStream = gulp.src('./templates/*.hbs') 
    .pipe(handlebars({ 
     handlebars: require('handlebars') 
    })) 
    .pipe(wrap('Handlebars.template(<%= contents %>)')) 
    .pipe(declare({ 
     namespace: 'templates', 
     noRedeclare: true, 
    })) 
    .pipe(concat('templates.js')); 

    merge(jsStream, templateStream) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('./dist/js')); 
}); 
zu verwenden

Ich habe es auswendig gemacht, ohne es zu versuchen, so funktioniert mein nicht wie vorgesehen

+0

Ich versuche, die Zwischendatei namens templates.js in diesem Fall zu beseitigen. Ich versuche es auf dem Schluckweg zu machen und mache alles bis zur endgültigen Ausgabe im Gedächtnis. – Stewart

+0

Ich nehme an, Sie haben andere Dateien als template.js in ./js/ bin ich richtig? – rick

+0

schauen Sie sich die bearbeitete an – rick