以下是我的吞咽档案:
// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var imagemin = require('gulp-imagemin');
// Styles Task
gulp.task('styles', function() {
return gulp.src('app/css/*.css')
.pipe(concat('all.css'))
.pipe(myth())
.pipe(gulp.dest('dist'));
});
// Scripts Task
gulp.task('scripts', function() {
return gulp.src('app/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
// Images Task
gulp.task('images', function() {
return gulp.src('app/img/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/img'));
});
// Watch Task
gulp.task('watch', function() {
gulp.watch('app/css/*.css', 'styles');
gulp.watch('app/js/*.js', 'scripts');
gulp.watch('app/img/*', 'images');
});
// Default Task
gulp.task('default', gulp.parallel('styles', 'scripts', 'images', 'watch'));
如果我单独运行images
、scripts
或css
任务,它就能工作。我必须在任务中添加return
--这在书中没有,但谷歌显示这是必需的。
我遇到的问题是default
任务错误:
[18:41:59] Error: watching app/css/*.css: watch task has to be a function (optionally generated by using gulp.parallel or gulp.series)
at Gulp.watch (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/gulp/index.js:28:11)
at /media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/gulpfile.js:36:10
at taskWrapper (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/undertaker/lib/set-task.js:13:15)
at bound (domain.js:287:14)
at runBound (domain.js:300:12)
at asyncRunner (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/async-done/index.js:36:18)
at nextTickCallbackWith0Args (node.js:419:9)
at process._tickCallback (node.js:348:13)
at Function.Module.runMain (module.js:444:11)
at startup (node.js:136:18)
我认为这是因为在watch任务中也没有return
。而且错误信息也不清楚-至少对我来说是这样。我试着在最后一个gulp.watch()
之后添加一个return
,但也不起作用。
7条答案
按热度按时间webghufk1#
在gulp3.x中,你可以像这样把任务的名字传递给
gulp.watch()
:在gulp 4.x中,情况就不同了。你必须传递一个函数。在gulp 4.x中,通常的做法是传递一个只带有一个任务名的
gulp.series()
调用。这将返回一个只执行指定任务的函数:thigvfpy2#
海湾-V4.0
现在回答这个问题有点晚了,但仍然。我也被困在这个问题中,这就是我如何让它工作的。x1c 0d1x
"详细分析我做错了什么"
1.当
watch
注意到我的html文件中有一些变化时,我忘记调用reload函数了。1.由于
fireUp
和KeepWatching
是阻塞的,它们需要并行启动而不是串行启动,所以我在变量run中使用了parallel函数。biswetbf3#
谢谢大家
适用于Gulp 4.xx版本
s3fp2yjn4#
在Gulp 4.0中对我很有效
yizd12fk5#
//检查对我有效的方法
q9rjltbz6#
在我的情况下,为我工作:(在gulpfile.js中)(安装:大口地喝
荐:大口观看
(4.0版)
ghg1uchk7#
在我这边,我也不得不加上“{usePolling:true}”,以使其正常工作:
我想这是因为我的代码运行到了一个Docker容器中。