2016-06-29 22 views
0

Ich benutze einen gulp Webserver in Kombination mit einem nodejs um meine API zu testen. Sie befinden sich beide im selben Verzeichnis. Sobald sich meine Mock-Daten ändern, führt Gulp einen Liveload durch. Ich wollte Filter zum Liveload hinzufügen. Das Hinzufügen meines ersten Filters funktionierte gut, aber mit zwei wird es nie wieder geladen.gulp liveload - Mehrere Filter

gulp.task('webserver',['watch:js', 'watch:sass', 'watch:html'], function() { 
    gulp.src('./') 
    .pipe(server({ 
     defaultFile: "dist/app.component.html", 
     livereload: { 
     enable: true, 
     filter: function(fileName){ 
     if (!(fileName.match(/.git/) | fileName.match(/.nodejs_srv/))) { 

         return true; 

        } else { 

         return false; 

        } 
     }}, 
     open: true 
    })); 
}); 

Edited Filterfunktion:

function(filePath, cb) { 
      cb(!(/.git/.test(filePath))); 
     }} 

Ich weiß nicht, wie fitlers dazu newbe hier hinzuzufügen.

+0

Sie haben kein logisches oder '||' zwischen den Filtern verwendet. Versuchen Sie 'fileName.match (/. Git /) || Dateiname ... ' –

+0

Whups. Aber es funktioniert auch nicht. Irgendwie funktioniert es jetzt nicht einmal mit einem Pfad. Ich werde diesen Post mit der One-Path-Filter-Funktion bearbeiten, die ich vorher hatte. – Faigjaz

Antwort

1

In Ordnung, ich habe die Lösung selbst gefunden. Es ist

function(filePath, cb) { 
      cb(!(/.git/.test(filePath)) && 
       !(/nodejs_srv/.test(filePath)); 
     }} 
+0

Ok, das wird funktionieren, aber das ist das gleiche wie 'cb (! (/.git/.test(filePath) || /nodejs_srv/.test(filePath)));' Es ist nur eine boolesche Variante. '! a &&! b ==! (a || b)'. Bitte markieren Sie Ihre Antwort als akzeptierte Antwort. –

+0

Aaah, mein erster Versuch war! (A) || !(b), das wäre vielleicht mein Fehler gewesen. Ich muss jedoch zwei Tage warten, um zu akzeptieren. – Faigjaz

+0

Ja du hast Recht, ich habe vergessen (zwei Tage). Es tut uns leid. Und ja, dein erster Versuch war falsch. Aber ich denke, du hast viel daraus gelernt. Das ist das beste Lernen: Fehler machen und herausfinden, was geschrieben wurde. –

1

Sie haben den Rückruf cb gelöscht. Ich weiß nicht, wie ich gut lade. Wenn es jedoch auf einen Rückruf angewiesen ist, müssen Sie diesen Rückruf aufrufen.

gulp.task('webserver',['watch:js', 'watch:sass', 'watch:html'], function() 
{ 
    gulp.src('./') 
    .pipe(server({ 
     defaultFile: "dist/app.component.html", 
     livereload: { 
     enable: true, 
     filter: function(fileName, cb) 
     { 
      cb(!(fileName.match(/.git/) || fileName.match(/.nodejs_srv/))); 
     } 
     }, 
     open: true 
    })); 
}); 

Ich habe gerade mein Beispiel eingegeben, keine Syntaxprüfung. Hoffentlich funktioniert es out of the box.

Der Callback erhält einen booleschen Wert als Parameter, der angibt, ob die Datei true oder nicht false genommen werden soll.

+0

Ich habe eine Lösung gefunden und möchte mich gerne selbst stellen. Ich musste && anstelle von || verwenden und alles funktioniert gut. Nun, das passiert, wenn Sie eine Funktion ohne Erklärung verwenden. Jedenfalls, danke an dich! – Faigjaz

+0

Entschuldigung, ich denke du hast einen Fehler gemacht. Wenn Sie ein und '&&' dann verwenden, testen Sie, dass die Datei nicht wie ".git" UND wie ".nodejs_srv" gleichzeitig ist, was immer der Fall ist. –

+0

Da ich immer noch nicht weiß, wie es funktioniert und was es tut, da ich nirgendwo eine passende Erklärung finden kann, kann ich nur sagen, dass es funktioniert. Wenn Sie sagen, es sollte nicht ... gut. Dann bin ich wirklich verwirrt. :( – Faigjaz