2014-12-12 10 views
7

Ich habe zwei Anforderungen für meinen Build-Skript:Ist es möglich, bedingte Abhängigkeiten im Schluck zu haben?

  1. Als ich gulp clean build laufen, clean vor build beginnt führen müssen. Wenn ich gulp build starte, sollte clean nicht ausgeführt werden.

Also, wenn clean angegeben ist, dann sollte build warten, sonst starten.

Der erste Teil ist möglich, wenn ich

gulp.task('clean'); 
gulp.task('build', ['clean']); 

tun jedoch die Nummer 2

verletzt Wenn ich

gulp.task('clean'); 
gulp.task('build'); 

diesem Punkt 1

Ist das möglich verletzt mit Schluck?

Antwort

10

verwenden können, Sie können nicht zwei schluck Aufgaben mit dem gleichen Befehl ausführen, wie Sie mit Abhängigkeitsmanagement haben Sie wollen.

Wie auch immer, Sie können ein Argument an Ihre build Aufgabe übergeben, die es erlaubt, mit einem kleinen Ternär auf den clean zu warten, bevor Sie ausgeführt werden.

So etwas wie folgt aus:

gulp.task('build', (process.argv[3] === '--clean') ? ['clean'] : null, function() { 
    ... 
}); 

Auf diese Weise können Sie Ihren Build normalerweise mit

gulp build 

starten Und wenn Sie es nennen wollen mit dem clean:

gulp build --clean 

Es gibt viele Möglichkeiten, eine bessere Handhabung von Argumenten zu erhalten, wie yargs o r das env von gulp-util. Aber ich fand meine Methode in der Tatsache schön, dass sie keine zusätzliche Abhängigkeit benötigt.

0

Sieht aus wie Sie Gulp-If

gulp.task('build', function() { 
    gulp.src('*.*') 
    .pipe(gulpif(condition, clean())) 
    .pipe(gulp.dest('./dist')); 
}); 
Verwandte Themen