最近发现gulp已经完全从版本3切换到了4。我决定试试新版本的新特性,但是调用watch和build任务的时候出现了问题。
给出以下错误:“以下任务未完成您是否忘记发出异步完成信号?”
编码:
var gulp = require('gulp'),
uglify = require('gulp-uglifyjs'),
autoprefixer = require('gulp-autoprefixer'),
del = require('del'),
cssnano = require('gulp-cssnano'),
rename = require('gulp-rename'),
imagemin = require('gulp-imagemin'),
pngquant = require('imagemin-pngquant'),
cache = require('gulp-cache');
//добавление префикса и минифицирование css файла
gulp.task('styles', function() {
return gulp.src('src/css/style.css')
.pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], {
cascade: true /*для читабельности кода*/
})) //автоматическое добавление префиксов
.pipe(cssnano())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest('src/css'));
});
/*сжатие js файлов*/
gulp.task('scripts', function() {
return gulp.src('src/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('src/js/min'));
});
//удаление директории
gulp.task('clean', function() {
return del.sync('dist');
});
//очистка кэша
gulp.task('clear-cache', function() {
return cache.clearAll();
});
//сжатие изображений
gulp.task('img', function() {
return gulp.src('src/img/**/*')
.pipe(cache(imagemin({
interlaced: true,
progressive: true,
svgoPlugins: [{
removeViewBox: false
}],
une: [pngquant()]
})))
.pipe(gulp.dest('dist/img'));
});
gulp.task('watch', function() {
gulp.watch('src/css/style.css', gulp.parallel('styles'));
gulp.watch('src/js/*.js', gulp.parallel('scripts'));
});
gulp.task('build', gulp.series('clean', 'img', 'styles', 'scripts'), function() {
var buildCss = gulp.src(['src/css/style.min.css'])
.pipe(gulp.dest('dist/css'));
var buildJs = gulp.src('src/js/min/*.js')
.pipe(gulp.dest('dist/js'));
var buildHtml = gulp.src('src/*.html')
.pipe(gulp.dest('dist'));
var buildHtmlPages = gulp.src('src/pages/*.html')
.pipe(gulp.dest('dist/pages'));
var buildAudio = gulp.src('src/audio/**/*')
.pipe(gulp.dest('dist/audio'));
});
gulp.task('default', gulp.parallel('watch','styles ','scripts'));
我又摆弄了一下,它奏效了