2014-12-12 12 views
7

Mam dwa wymagania dla mojego skryptu produkcji:Czy możliwe jest posiadanie warunkowych zależności w połknięciu?

  1. Kiedy biegnę gulp clean build, clean należy zakończyć przed build startów.
  2. Jeśli uruchomię gulp build, to nie powinien działać clean.

Tak więc, jeśli podano clean, to build powinien na to poczekać, inaczej zacznie.

Pierwsza część jest możliwe, jeśli robię

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

jednak, że jest niezgodny z pkt 2

Jeśli robię

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

naruszający pkt 1

Czy to możliwe z łykiem?

Odpowiedz

10

Nie można uruchomić dwa zadania łyk z tego samego polecenia jak ty z zarządzania zależność chcesz.

W każdym razie możesz przekazać argument do swojego zadania build, które pozwoli, za pomocą małego ternarium, aby poczekać na zakończenie operacji clean.

Więc coś takiego:

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

ten sposób można uruchomić Twój build normalnie

gulp build 

i kiedy chcesz to nazwać z clean:

gulp build --clean 

Istnieje wiele sposobów na usprawnienie obsługi argumentów, takich jak yargs o r env z gulp-util. Ale moja metoda była miła w tym, że nie wymaga żadnej dodatkowej zależności.

0

Wygląda można użyć Gulp-If

gulp.task('build', function() { 
    gulp.src('*.*') 
    .pipe(gulpif(condition, clean())) 
    .pipe(gulp.dest('./dist')); 
}); 
Powiązane problemy