JavaScript-什么是gulp任务异步运行提示?

我有两个任务.

萨斯:

gulp.task('sass', function() {
    gulp.src('src/sass/**.{scss, sass}')
        .pipe(sourcemaps.init())
            .pipe(sass({outputStyle: 'compressed'}))
            .on('error', handleErrors)
            .pipe(autoprefixer())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist/css'))
        .pipe(browserSync.reload({stream: true}))
});

和CSS优化任务:

gulp.task('cssopt', ['sass'], function() {
    gulp.src('dist/css/style.css')
        .pipe(uncss({html: ['http://example.dev//']}))
        .pipe(cmq({log: true}))
        .pipe(shrink())
        .pipe(rename({suffix: '.opt'}))
        .pipe(gulp.dest('dist/css'))
});

cssopt任务依赖于sass任务,因为它使用的是sass生成的style.css文件.但是它不起作用,找不到style.css文件,因为它不存在.如果我先单独运行sass,则cssopt作品会导致style.css在那.

从文档(重点是我的):

An array of tasks to be executed and completed before your task will run.

文件也说:

Note: Are your tasks running before the dependencies are complete? Make sure your dependency tasks are correctly using the async run hints: take in a callback or return a promise or event stream.

我不太了解:“异步运行提示” …“ …

我试着做一个干净的任务,作为无礼的部门,尽管效果很好.

我可以将它们粉碎成一个任务,但是cssopt花费的时间很长(当您给它指定URL时uncss相当慢),而且无论如何我只需要在生产中使用style.opt.css文件.

我正在使用最新版本(1.3.3)的gulp-sass.

解决方法:

“async run hints”… wat…

您需要向gulp系统暗示您的任务是异步的.您可以通过在任务函数中使用回调参数或返回事件流或Promise来实现.那就是您缺少的任务,它们当前返回未定义的状态,因此gulp希望它们立即完成.尝试

gulp.task('sass', function() {
    return gulp.src('src/sass/**.{scss, sass}').…
上一篇:javascript-Gulp同步任务问题


下一篇:javascript-Gulp.js:重新载入更改过的php / html页面