【发布时间】:2019-07-13 08:15:57
【问题描述】:
我正在做一个需要将.sass 文件编译成.css 文件的小项目。我之前使用过 Gulp 并喜欢它,但我的旧 gulpfile.js 不再工作了,因为 Gulp 从版本 4 开始发生了变化。
我发了一个新的gulpfile.js:
var gulp = require('gulp'),
sass = require('gulp-sass'),
rename = require('gulp-rename');
var paths = {
styles: {
src: 'src/scss/*.scss',
dest: 'build/css'
}
};
function styles() {
return gulp
.src(paths.styles.src, {
sourcemaps: true
})
.pipe(sass())
.pipe(rename({
basename: 'main',
suffix: '.min'
}))
.pipe(gulp.dest(paths.styles.dest));
}
function watch() {
gulp
.watch(paths.styles.src, styles);
}
var syncConfig = {
server: {
baseDir : './',
index : 'index.html'
},
port : 3000,
open : false
};
// browser-sync
function server() {
init(syncConfig);
}
var build = gulp.parallel(styles, watch, server);
gulp
.task(build);
gulp
.task('default', build);
我有一个“您是否忘记发出异步完成信号?”控制台返回错误。
我的错误在哪里?
【问题讨论】:
-
传递给 gulp.parallel 的函数在完成后必须调用回调,请参阅gulpjs.com/docs/en/api/parallel
-
@Molda
function server(done) { if (browsersync) browsersync.init(syncConfig); done(); }有同样的结果,不幸的是。 -
watch和styles函数呢? -
@Molda 我提供的所有代码都在帖子中。
-
你说在
server函数中调用done()会导致同样的错误,所以我问你是否在所有函数(样式、手表和服务器)中调用了回调函数done你正在传递给gulp.parallel?因为如果不是,那就是问题所在。