Gulp回调 - 如何告诉Gulp先在另一个任务之前运行任务?

lau*_*kok 2 javascript css asynchronous less 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/'));

});
Run Code Online (Sandbox Code Playgroud)

然后用其他普通的.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/'));
});
Run Code Online (Sandbox Code Playgroud)

运行任务,

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

})
Run Code Online (Sandbox Code Playgroud)

它只优化'css/normal.css',但不能与'css/myless.less.css'连接.

我该怎么办?

Bal*_*zar 7

您的styles任务应该依赖于less等待其完成的人.做你做的将并行运行这两个任务.

您可以在gulpfile的每个任务上指定一个依赖任务数组:

gulp.task('styles', ['less'], function () {
Run Code Online (Sandbox Code Playgroud)

然后你的default任务应该是这样的:

gulp.task('default', ['styles']);
Run Code Online (Sandbox Code Playgroud)