2016-02-12 1 views
6

Ich versuche, einige Dateien in meinem Index zu injizieren, alle von ihnen verketteten und minimierte in einen TMP-Ordner wie folgt:Gulp-inject sagt: „Nichts in index.html zu injizieren“

gulp.task('prep-js',['clean'], function(){ 
    var jspath = './src/page/**/*.js'; 
    var treatJs = gulp.src(jspath) 
     .pipe(plugins.concat('scripts.js')) 
     .pipe(plugins.uglify()) 
     .pipe(gulp.dest('.tmp/page/js')) 
}); 

Aber wenn ich die Injektionsaufgabe ausführe, heißt es "Nichts in index.html injizieren". Hier ist der Code:

gulp.task('inject-deps', ['prep-css', 'prep-js'], function(){ 

    //select main bower files 
    var bowerDep = gulp.src(plugins.mainBowerFiles(), {read: false}); 

    //inject files 
    return gulp.src('./src/page/index.html') 
      .pipe(plugins.inject(bowerDep, {relative: true, name:'bower'})) 
      .pipe(plugins.inject(gulp.src('.tmp/page/js/*.js'), {name:'frontjs'})) 
      .pipe(plugins.inject(gulp.src('.tmp/page/css/*.css'), {name:'frontcss'})) 
      .pipe(gulp.dest('.tmp/page')); 
}); 

Interessante Sache, das erste Rohr die wichtigsten Bower Dateien Injektion funktioniert perfekt, aber es geschieht nicht auf die beiden folgenden.

Auch nur zur Information, "Plugins" ist eine Variable, die meine Plugins erfordert.

Irgendeine Idee zu diesem Problem?

Antwort

3

Sie benötigen den Strom in Ihrer prep-js Aufgabe zurückzukehren:

gulp.task('prep-js',['clean'], function(){ 
    var jspath = './src/page/**/*.js'; 
    return gulp.src(jspath) 
     .pipe(plugins.concat('scripts.js')) 
     .pipe(plugins.uglify()) 
     .pipe(gulp.dest('.tmp/page/js')) 
}); 

Ansonsten inject-deps nicht für prep-js warten zu beenden, bevor es ausgeführt wird, wird noch nicht in .tmp/page/js sein die verketteten und uglified JS-Dateien bedeutet.

Relevante Teil des Gulp documentation:

Hinweis: Standardmäßig werden Aufgaben mit maximaler Parallelität - z.B. Es startet alle Aufgaben gleichzeitig und wartet auf nichts. Wenn Sie eine Serie erstellen möchten, wo in einer bestimmten Reihenfolge ausführen Aufgaben, müssen Sie zwei Dinge tun:

  • geben sie einen Hinweis, es zu sagen, wann die Aufgabe erledigt ist,
  • und geben ihm eine Hinweis, dass eine Aufgabe von der Fertigstellung eines anderen abhängt.
+0

Dank @svenschoenung! Aber ist es noch nicht getan, wenn ich die abhängigen Aufgaben, wie [Prep-Css ',' Prep-Js '] angeben? –

+0

Nein, um zu verhindern, dass die Aufgaben gleichzeitig ausgeführt werden, benötigen Sie ** beide ** der Aufzählungspunkte, die ich aus den Dokumenten zitiert habe. Sie haben die zweite (die Abhängigkeit mit '['prep-css', 'prep-js'] ') andeutend, aber Sie vermissen die erste (die, die ich fett machte). –

+0

Also, ich muss Callbacks verwenden, oder? –