我刚刚在几天前遇到过这个问题。对我有用的是自己完成每项任务 gulp.watch() 随着 gulp.series() 在监视任务调用而不是监视任务本身。例如:
gulp.watch()
gulp.series()
gulp.task('watch', function() { gulp.watch(src.js, gulp.series('minify-js')); gulp.watch(src.css, gulp.series('minify-css')); });
gulp.task('minify-css', gulp.series('clean-css', function() { return gulp.src(src.css) .pipe(cssmin()) .pipe(gulp.dest(dest.css)); })); gulp.task('minify-js', gulp.series('clean-scripts', function() { return gulp.src(src.js) .pipe(uglify()) .pipe(gulp.dest(dest.js)); })); gulp.task('watch', gulp.series('minify-js', 'minify-css', function() { gulp.watch(src.js, gulp.series('minify-js')); gulp.watch(src.css, gulp.series('minify-css')); }));
正如@Abdaylan建议的那样,我也提倡转换到功能。不过,所以你可以看到你的代码错误的地方,我在这里修复了它。 Gulp 4的确如此 的 不 强> 使用此语法:
gulp.task('someTask', ['task1', 'task2'], function () {}); // gulp 3
Gulp 4:
gulp.task('someTask', gulp.series('task1', 'task2', function () {})); // gulp 4 with string tasks
要么 gulp.parallel 。所以你可以使用你的 gulp.task 语法(而不是命名函数),如果你修改它们以使用gulp 4支持的签名,就像我在你的答案顶部的修改代码中所做的那样。
gulp.parallel
gulp.task
Gulp 4具有命名功能:
gulp.task(someTask, gulp.series(task1, task2, function () {})); // gulp 4 with named functions
因此,对于命名函数,任务不称为字符串。
也可以看看 任务从未定义 使用相同的错误消息从gulp3迁移到gulp4时的其他潜在问题。