我有两项任务。
萨斯:
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
任务,因为它使用style.css
生成的sass
文件。但是它不起作用,它找不到style.css
文件,因为它不在那里。如果我先单独运行sass
,那么cssopt
会导致style.css
在那里。
从文档(强调我的):
要执行并完成 任务的一系列任务将运行。
文档也说:
注意:在依赖项完成之前,您的任务是否正在运行?确保您的依赖项任务正确使用异步运行提示:接受回调或返回承诺或事件流。
我不太明白:“async run提示”...... wat ...
我尝试将clean
任务作为deps
运行,但是效果不错。
我可以把它们粉碎成一个任务,但是cssopt
需要很长时间(当你给它一个URL时uncss
很慢),我只需要style.opt.css
个文件无论如何都在生产。
我正在使用gulp-sass的最新版本(1.3.3)。
答案 0 :(得分:4)
“async run提示”...... wat ...
您需要提示您的任务 async 的gulp系统。您可以通过为任务函数提供回调参数,或通过return
事件流或承诺来实现。这就是你的任务所缺乏的,他们返回undefined
目前所以gulp期望他们立即完成。尝试
gulp.task('sass', function() {
return gulp.src('src/sass/**.{scss, sass}').…