Oto złożone zadanie, którego nie wiem, jak go zastąpić zależnościami zadań.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
Odpowiedni dziennik zmian https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [deprecate gulp.run]
javascript
gulp
toutpt
źródło
źródło
scripts
, ale sensowne jest też wymuszenie uruchomienia tego zadania od razu (bez czekania, aż jakiś plik skryptu się zmieni).gulp.task('default', ['build', 'watch']);
, które najpierw buduje, a następnie zaczyna oglądać.Lub możesz to zrobić:
źródło
.start
jest metodą programu Orchestrator. Ponieważ Gulp dziedziczy po tym, powinno działać. Uruchamiam zadanie łyka z funkcji nie-łykowej (watchify) i wydaje się, że działa.gulp.start
zostanie usunięty w następnym wydaniu: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
można zastąpićrun-sequence
npmjs.com/package/run-sequenceźródło: https://github.com/gulpjs/gulp/issues/755
gulp.start()
nigdy nie miał być publicznym interfejsem API ani nie był używany. I jak wspomniano powyżej w komentarzach, zarządzanie zadaniami zostanie zastąpione w następnej wersji ... takgulp.start()
będzie zepsute.Prawdziwym zamiarem projektu „Gulp” jest tworzenie zwykłych funkcji Javascript i tylko ich wywoływanie.
Przykład:
źródło
Wybacz mi, że wskrzeszę stare pytanie. Przyjęta odpowiedź nie dotyczy kwestii uruchamiania zadań przed ustawieniem zegarków. Następna odpowiedź używa gulp.start, który odchodzi. Trzecia odpowiedź wskazuje, że należy używać zwykłych funkcji, ale przykład wydaje się dziwny. Poszukałem trochę, ale nie znalazłem prostego przykładu.
Oto moje rozwiązanie. Pomysł polega na zdefiniowaniu zwykłych funkcji js, a następnie zarejestrowaniu ich jako zadań. W razie potrzeby funkcje można wywołać bezpośrednio lub z poziomu zegarka.
Jestem nowy, aby przełknąć. Daj mi znać, jeśli przeoczyłem coś oczywistego.
źródło
gulp.watch
zadań zdefiniowanychwatchTask()
przedbuildTask()
potwierdzeniem ukończenia? Wydaje mi się, że to wciąż stan wyścigu i nie gwarantuje zbudowania przed obejrzeniem.łyk 4
Lubię gulp4!
źródło
Jak wspomina @dman,
gulp.start
zostaną odrzucone w następnej wersji. Można to również zobaczyć w tym numerze łyku .W komentarzach do odpowiedzi @Pavel Evstigneev @joemaller wspomina, że w tym scenariuszu możemy użyć sekwencji uruchamiania .
Ale proszę zauważyć, że autor sekwencji uruchamiania mówi:
Tak więc przed łykiem 4.0 możemy użyć sekwencji run , po 4.0 możemy po prostu użyć łyka.
źródło
Jeśli chcesz zachować kolejność wykonywanych zadań, możesz zdefiniować zależności w sposób opisany tutaj - wystarczy, że zwróć strumień z zależności:
Zdefiniuj zadanie, które od tego zależy:
I używaj go z zegarka:
Teraz
dependecy
zadanie zakończy się przeddepends
uruchomieniem (na przykład zadania „jasmine” i „embed” byłyby zależnościami i miałbyś inny „serwer” zadania, który byłby od nich zależny). Nie potrzeba żadnych hacków.źródło
W Gulp 4 jedyne, co wydaje mi się działać, to:
źródło
Aby uruchomić zadanie przed rozpoczęciem oglądania, zamiast używać gulp.run () lub gulp.start (), po prostu uruchom polecenie gulp prosto do góry.
Więc zamiast:
Po prostu zrób:
Możesz też zawinąć ten ostatni kod w „normalną” funkcję i wywołać ją w dowolnym momencie.
- Zainspirowany tą odpowiedzią z podobnego wątku .
źródło
Nadal nie rozumiem, jak to właściwie rozwiązuje bieżące pytanie.
Jeśli mam 4 zadania ze zdefiniowanymi zależnościami między nimi
A, B, C, D
gdzie A zależy od B itd., jak zdefiniowano w,
gulp.task('A',['B'],function A(){});
a następnie zdefiniowałem nowe zadanie za pomocą gulp.watch, uruchamiając tylko funkcje, które zduplikowałyby zależności.np. mając te zadania (każda funkcja zadań ujawniona przez nazwę):
mogę napisać 1)
który wykona A-> D, ale jeśli np. krok B zawiedzie, nigdy nie wejdzie do zadania (pomyśl o błędzie kompilacji lub testu)
czy mogę napisać 2)
który nie działałby A-> D dopóki coś nie zostało zmienione.
czy mogę napisać 3)
co spowodowałoby powielenie (i błędy w czasie) hierarchii zależności.
PS: W przypadku, gdy ktoś zastanawia się, dlaczego chciałbym, aby moje zadanie zegarka zostało wykonane, jeśli którekolwiek z zadań zależnych się nie powiedzie, jest to zwykle spowodowane tym, że używam zegarka do programowania na żywo. na przykład. Rozpoczynam zadanie zegarka, aby rozpocząć pracę nad testami itp. i może się zdarzyć, że początkowy kod, z którym zaczynam, ma już problemy, a zatem błędy.
Mam więc nadzieję, że łyk lub coś podobnego pozostanie na jakiś czas
źródło