2015-09-16 12 views
6

runsequence jest poniższy kod nie działa?runSequence nie działa z gulp?

var gulp = require('gulp'); 
var del = require('del'); 
var browserify = require('gulp-browserify'); 
var concat = require('gulp-concat'); 
var runSequence = require('run-sequence'); 
var nodemon = require('gulp-nodemon'); 

gulp.task('clean', function(cb) { 
    console.log('YOLO1'); 
    del(['build/*'], cb); 
}); 

gulp.task('copy', function() { 
console.log('YOLO2') 
return gulp.src('client/www/index.html') 
    .pipe(gulp.dest('build')); 
}); 

gulp.task('browserify', function() { 
    console.log('YOLO3') 
    return gulp.src('client/index.js') 
    .pipe(browserify({transform: 'reactify'})) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('build')); 
}); 

gulp.task('build', function(cb) { 
    console.log('YOLO4') 
    runSequence('clean', 'browserify', 'copy', cb); 
}); 

gulp.task('default', ['build'], function() { 
    gulp.watch('client/*/*', ['build']); 
    nodemon({ script: './bin/www', ignore: ['gulpfile.js', 'build', 'client', 'dist'] }); 
}); 

Prąd wyjścia:

YOLO4, 
YOLO1 

pożądany wynik:

YOLO4, 
YOLO1, 
YOLO3, 
YOLO2 

Nie jestem pewien, dlaczego runSequence wykonuje tylko pierwsze zadanie i nie można wykonać resztę? jakieś pomysły?

Odpowiedz

8

del nie bierze wywołania zwrotnego, ale zwraca się synchronicznie: (patrz pierwsze próbki w https://github.com/gulpjs/gulp/blob/master/docs/recipes/delete-files-folder.md)

gulp.task('clean', function() { 
    console.log('YOLO1'); 
    return del(['build/*']); 
}); 
+1

Ta odpowiedź musi być oprawione i umieszczone na ścianie. Niedawno zmienili zachowanie "del" (używając obietnic, nigdy więcej wywołań zwrotnych), więc wiele zadań musi zostać zaktualizowanych. – zeh