Gulp watch在VS Code终端无法运行,报错需函数形式任务,请求帮助
解决Gulp Watch任务报错:"watch task has to be a function"
嗨,我之前也踩过这个坑!你遇到的错误是因为Gulp 4.x版本彻底改变了任务编排的语法,而你的代码还在沿用Gulp 3.x的旧写法。
问题根源
在Gulp 3里,你可以直接给gulp.watch的第二个参数传任务名数组(比如['buildcss']),但Gulp 4要求这个参数必须是一个函数——要么是自定义函数,要么用gulp.series()或gulp.parallel()生成的任务流函数。
修复后的完整代码
把你的watch任务改成下面这样就行:
var gulp = require('gulp'); var gulpSass = require('gulp-sass'); gulp.task('buildcss', function(){ return gulp.src('./dev-assets/style.scss') .pipe(gulpSass()) .pipe(gulp.dest('./prod-assets')); }); gulp.task('watch', function(){ // 用gulp.series包裹任务名,生成符合要求的函数 gulp.watch('./dev-assets/**/*.scss', gulp.series('buildcss')); });
额外说明
如果你需要在文件变化时同时执行多个任务,就用gulp.parallel(),比如:
gulp.watch('./dev-assets/**/*.scss', gulp.parallel('buildcss', 'minifycss'));
改完之后再运行gulp watch,应该就能正常监听SCSS文件变化并自动编译了!
内容的提问来源于stack exchange,提问作者blosiu
相关产品推荐
相关产品推荐

