我已升级至gulp 4,并且需要更好地了解如何运行正在进行的监视任务以及如何使任务异步运行。我正在使用gulp-livereload进行重新加载任务。
当我最初尝试运行gulpfile时,它抛出了有关异步完成的错误。看起来像这样:
// templating task
gulp.task('html', function() {
return gulp.src('views/**/*.html')
.pipe(livereload());
});
//styles build/minification
gulp.task('styles', function() {
return sass('client/scss/styles.scss', {
noCache: true,
style: 'compressed'
})
.pipe(cleanCSS())
.pipe(gulp.dest('public/build/stylesheets'))
.pipe(livereload());
});
gulp.task('scripts', function() {
gulp.src('client/js/script.js')
.pipe(webpack(require('./webpack.config.js')))
.pipe(uglify())
.pipe(gulp.dest('public/build/javascripts'))
.pipe(livereload());
});
// uses livereload
gulp.task('watch', function() {
livereload.listen();
gulp.watch('views/**/*.html', ['html']);
gulp.watch('client/scss/*.scss', ['styles']);
gulp.watch('client/js/**/*.js', ['scripts']);
});
gulp.task('server', function () {
// Start the server at the beginning of the task
server.run(['./bin/www']);
});
我的默认任务是:
//default task
gulp.task(
'default',
gulp.series('html', 'styles', 'scripts', 'watch', 'server')
);
这引发了:
[10:37:30]使用gulpfile /site/gulpfile.js [10:37:30] 开始'default'... [10:37:30]开始'html'... [10:37:30] 在80毫秒后完成'html'[10:37:30]开始'styles'... [10:37:31] 在1.24秒后完成“样式” [10:37:31]开始“脚本” ... [10:37:33]版本:webpack 1.15.0 资产大小块块名称scripts.min.js 17.7 kB 0 [散发]主要[10:37:33]以下任务未完成:默认,脚本[10:37:33]您是否忘了发信号 异步完成?
我找到了答案Gulp error: The following tasks did not complete: Did you forget to signal async completion?,所以我将代码更改为:
//default task
gulp.task('default', function(done) {
gulp.series('html', 'styles', 'scripts', 'watch', 'server');
done();
});
哪个:
[10:59:08] Using gulpfile /site/gulpfile.js
[10:59:08] Starting 'default'...
[10:59:08] Finished 'default' after 2.06 ms
但是看起来好像...跳过了所有内容,实际上我的资产都没有编译,而且我的监视任务永远不会开始。 In the docs for gulp live reload声明:
3.x升级通知gulp-livereload将不会自动侦听更改。您现在必须手动调用livereload.listen,除非您 设置选项开始:
livereload({start:true})
这不会开始实时重新加载。
如何运行正在进行的监视任务并使任务在Gulp 4.0中运行?