Gulp 'watch' 使用 BrowserSync 移动到 Gulp 4 后未获取更改

Gulp 'watch' not picking up changes after moving to Gulp 4 with BrowserSync

刚刚从 Gulp 3.9.1 迁移到 Gulp 4 并且当我 运行 gulp 并且它时一切正常编译一切都很好,我可以很好地启动 watch 命令,所以它 出现 就像它正在监视变化一样,每当发生变化时,它似乎无法接收它.

这是我的 watch 任务:

gulp.task('watch', gulp.series('browser-sync', function() {
    gulp.watch(['scss/**/*.scss'], gulp.series('css-minify'));
    gulp.watch(['js/dev/**/*.js'], gulp.series('js-watch'));
}));

browser-sync 任务:

gulp.task('browser-sync', function() {
    browserSync.init({
        open: 'external',
        proxy: "mysite.local",
        host: 'mysite.local',
        // port: 5000,
        browser: "chrome",
    });
});

Gulp 4 中是否还需要进行我在这里遗漏的其他更改?

好的,似乎在 Gulp 4 中它需要一个 stream, promise, event emitter, child process or observable to be returned from a function or task

所以一旦我改变了:

gulp.task('browser-sync', function() {
    browserSync.init({
        open: 'external',
        proxy: "mysite.local",
        host: 'mysite.local',
        // port: 5000,
        browser: "chrome",
    });
});

至:

gulp.task('browser-sync', function(done) {
    browserSync.init({
        open: 'external',
        proxy: "mysite.local",
        host: 'mysite.local',
        // port: 5000,
        browser: "chrome",
    });
    done();
});

...一切都恢复正常了。

注意添加参数传递给匿名函数,然后在函数末尾调用 - 如链接文章中所述。