2014-11-03 52 views
2

我該如何告訴Gulp先執行一項任務?Gulp回調 - 如何讓Gulp先執行一項任務?

舉例來說,我需要那麼緊縮.LESS文件轉換成的CSS第一,

// Crunch less into css. 
gulp.task('less', function() { 

    return gulp.src([ 
     'css/myless.less' 
    ]) 
    .pipe(less().on('error', function (err) { 
     console.log(err); 
    })) 
    .pipe(cssmin().on('error', function(err) { 
     console.log(err); 
    })) 
    .pipe(rename({suffix: '.less'})) 
    .pipe(gulp.dest('css/')); 

}); 

CONCAT它與其他正常的.css文件,

var concat = require('gulp-concat'), 
    minifyCSS = require('gulp-minify-css'), 
    clean = require('gulp-clean'); 

// CSS concat, auto-prefix and minify 
gulp.task('styles', function() { 
    gulp.src([ 
     'css/myless.less.css', 
     'css/normal.css' 
    ]) 
    .pipe(concat('main.css')) 
    .pipe(minifyCSS()) 
    .pipe(gulp.dest('css/')); 
}); 

運行任務,

gulp.task('default', ['less', 'styles'], function() { 

}) 

它只會優化'css/normal.css',但不會'css/myless.less.css'連接它。

我該怎麼辦?

+2

FYI:如果你不知道在你的'gulp.src('gulp不知道你的任務已經完成並且馬上就要開始下一個任務!(你在你的「樣式」任務中錯過了它)之前添加'return' – Pylinux 2015-01-20 12:23:38

回答

7

您的styles任務應該取決於less一個等待完成。做你所做的將會同時運行這兩項任務。

您可以在gulpfile的每個任務指定相關任務的數組:

gulp.task('styles', ['less'], function() { 

然後你default任務應該是這樣的:

gulp.task('default', ['styles']); 
+0

非常感謝對於這個答案。 – laukok 2014-11-03 13:42:35

+1

很高興幫助;) – 2014-11-03 13:43:30

+0

僅供參考依賴任務數組運行異步。我第一次把我扔下去了...... – jordanb 2015-12-04 19:05:14