Jestem nowy w łykaniu i przeglądałem przykładowe konfiguracje. Niektórzy ludzie mają następującą strukturę:
gulp.task("XXXX", function() {
gulp.src("....
Inni ludzie to mają:
gulp.task("XXXX", function() {
return gulp.src("....
Zastanawiam się jaką różnicę robi powrót na src ??
javascript
node.js
gulp
boldfacedesignuk
źródło
źródło
gulp.src()
? Co się stanie, jeśli nie wróciszgulp.src()
?gulp.src(...
, czy też powinniśmy to robić zawsze?” Ta odpowiedź byłaby bardziej przydatna, gdyby dotyczyła tego punktu, IMO; obecnie nie wyjaśnia, dlaczego istnieje wiele przykładów zadań, które go wywołują,gulp.src(...
ale nie zwracają.return
system zależności może uruchomić zadanie przed wykonaniem jego zależności. Mam plik gulpfile z wieloma zadaniami (głównie generowanymi przez kod). Ponieważ nie zwracałem strumienia, zadanie zależne już odczytywało plik, podczas gdy jego zależność wciąż się budowała.Jeśli masz zadania zależne, musisz zwrócić strumień, aby zadania czekały na ukończenie zadań zależnych, zanim zostaną uruchomione.
na przykład
// without return gulp.task('task1', function() { gulp.src('src/coffee/*.coffee') /* eg compile coffeescript here */ .pipe(gulp.dest('src')); }); gulp.task('task2', ['task1'], function() { gulp.src('src/*.js') /* eg minfify js here */ .pipe(gulp.dest('dest')); });
w tym przykładzie można się spodziewać Zadania1 do końca (np kompilacji coffeescript lub cokolwiek) przed task2 biegnie ... ale jeśli dodamy do zwrotu - jak na przykładzie poniżej - będą wtedy działać synchronicznie nie asynchronicznie; i skompilowany coffeescript nie będzie minified ponieważ task2 nie będzie czekać do zakończenia zadania 1 i tak nie będzie podnieść na skompilowanej wyjścia Zadania1 . Dlatego zawsze powinniśmy wracać w takich okolicznościach.
// with return gulp.task('task1', function() { return gulp.src('**/*.coffee') /* your operations here */ .pipe(gulp.dest('dest')); }); gulp.task('task2', ['task1'], function() { return gulp.src('**/*.js') /* your operations here */ .pipe(gulp.dest('dest')); });
Edycja: Przepis tutaj wyjaśnia to dalej. https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md
źródło
Uważam, że jest to pomocne, jeśli masz wiele strumieni na zadanie. Musisz połączyć / scalić wiele strumieni i zwrócić je.
var gulp = require('gulp'); var merge = require('gulp-merge'); gulp.task('test', function() { var bootstrap = gulp.src('bootstrap/js/*.js') .pipe(gulp.dest('public/bootstrap')); var jquery = gulp.src('jquery.cookie/jquery.cookie.js') .pipe(gulp.dest('public/jquery')); return merge(bootstrap, jquery); });
Alternatywą, przy użyciu struktury definicji zadania Gulps, byłoby:
var gulp = require('gulp'); gulp.task('bootstrap', function() { return gulp.src('bootstrap/js/*.js') .pipe(gulp.dest('public/bootstrap')); }); gulp.task('jquery', function() { return gulp.src('jquery.cookie/jquery.cookie.js') .pipe(gulp.dest('public/jquery')); }); gulp.task('test', ['bootstrap', 'jquery']);
źródło