Gulp 'watch' 使用 BrowserSync 迁移到 Gulp 4 后未拾取更改

标签 gulp browser-sync gulp-watch gulp-browser-sync

刚刚从 Gulp 3.9.1 迁移到 Gulp 4,当我运行 gulp 时一切都工作正常并且它编译一切正常我可以很好地启动 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'));
}));

浏览器同步任务:

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();
});

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

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

关于Gulp 'watch' 使用 BrowserSync 迁移到 Gulp 4 后未拾取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955842/

相关文章:

javascript - Gulp watch 卡在最后并显示正在开始任务

Gulp 丑化并保存许可证

node.js - BrowserSync 无法获取/

node.js - grunt-browser-sync 疯狂 : opening multiple instances of the browser over and over again

css - 防止 SASS gulp 编译器在 "!important"之前添加空格

javascript - gulp.watch 导致 "task completion callback called too many times"

javascript - Gulp.js 事件流合并顺序

laravel - 更改 Laravel 的 Gulp/Elixir `watch` 任务

javascript - Gulp 陷入无限循环

angular - 对于Angular2,为什么具有相同组件的两个页面(两个选项卡)会相互影响?