Gulp 吞下4块手表不工作,只运行一次

Gulp 吞下4块手表不工作,只运行一次,gulp,gulp-watch,gulp-browser-sync,gulp-4,Gulp,Gulp Watch,Gulp Browser Sync,Gulp 4,我从3号大口喝变为4号大口喝,但我无法让它工作 当我运行gulp并保存SCSS或HTML文件时,它会成功地创建一个新文件。如果我再保存一次,什么也不会发生。它只运行一个 下面是我的gulpfile.js 您的“监视”任务是不必要的,其语法错误: gulp.task('watch', function() { gulp.watch(['sass']); }); 所以删除它。“服务器”任务中已经有gulp.watch语句: 我把上面的第二个注释掉了,因为你已经打过电话了 .pipe(bro

我从3号大口喝变为4号大口喝,但我无法让它工作

当我运行gulp并保存SCSS或HTML文件时,它会成功地创建一个新文件。如果我再保存一次,什么也不会发生。它只运行一个

下面是我的gulpfile.js


您的“监视”任务是不必要的,其语法错误:

gulp.task('watch', function() {
    gulp.watch(['sass']);
});
所以删除它。“服务器”任务中已经有gulp.watch语句:

我把上面的第二个注释掉了,因为你已经打过电话了

.pipe(browserSync.stream()); 
在“sass”任务结束时,注释掉的browserSync.reload行也是重复的

您还需要在“服务器”任务中发出异步完成的信号,请参阅我在何处添加了完成回调来执行此操作:

// Static Server and watching scss/html files
gulp.task('server', function (done) {
    browserSync.init({
        server: {
            baseDir: "./template"
        }
    });
    gulp.watch("template/assets/scss/**/*.scss", gulp.series('sass'));
    //  gulp.watch("template/assets/scss/**/*.scss", browserSync.reload);
    gulp.watch("template/**/*.html", browserSync.reload);
    done();
});
我从“服务”任务的开头删除了gulp.series“sass”调用,因为您已经在默认任务中首先调用了“sass”,所以在“服务器”任务中不需要它

还要注意在第一个watch中使用gulp.series'sass,而不是gulp.task'sass

最后,由于我们正在删除单独的“监视”任务,因此将“默认”任务更改为:

gulp.task('default', gulp.series('sass', 'server'));
并删除其中的gulp.parallel-您只需要在“server”之前运行“sass”

以下是所有更改:

// Static Server and watching scss/html files
gulp.task('server', function (done) {
    browserSync.init({
        server: {
            baseDir: "./template"
        }
    });
    gulp.watch("template/assets/scss/**/*.scss", gulp.series('sass'));
    // gulp.watch("template/assets/scss/**/*.scss", browserSync.reload);
    gulp.watch("template/**/*.html", browserSync.reload);
    done();
}));


// gulp.task('watch', function() {
//    gulp.watch(['sass']);
// });

gulp.task('default', gulp.series('sass', 'server'));

您的“监视”任务是不必要的,其语法错误:

gulp.task('watch', function() {
    gulp.watch(['sass']);
});
所以删除它。“服务器”任务中已经有gulp.watch语句:

我把上面的第二个注释掉了,因为你已经打过电话了

.pipe(browserSync.stream()); 
在“sass”任务结束时,注释掉的browserSync.reload行也是重复的

您还需要在“服务器”任务中发出异步完成的信号,请参阅我在何处添加了完成回调来执行此操作:

// Static Server and watching scss/html files
gulp.task('server', function (done) {
    browserSync.init({
        server: {
            baseDir: "./template"
        }
    });
    gulp.watch("template/assets/scss/**/*.scss", gulp.series('sass'));
    //  gulp.watch("template/assets/scss/**/*.scss", browserSync.reload);
    gulp.watch("template/**/*.html", browserSync.reload);
    done();
});
我从“服务”任务的开头删除了gulp.series“sass”调用,因为您已经在默认任务中首先调用了“sass”,所以在“服务器”任务中不需要它

还要注意在第一个watch中使用gulp.series'sass,而不是gulp.task'sass

最后,由于我们正在删除单独的“监视”任务,因此将“默认”任务更改为:

gulp.task('default', gulp.series('sass', 'server'));
并删除其中的gulp.parallel-您只需要在“server”之前运行“sass”

以下是所有更改:

// Static Server and watching scss/html files
gulp.task('server', function (done) {
    browserSync.init({
        server: {
            baseDir: "./template"
        }
    });
    gulp.watch("template/assets/scss/**/*.scss", gulp.series('sass'));
    // gulp.watch("template/assets/scss/**/*.scss", browserSync.reload);
    gulp.watch("template/**/*.html", browserSync.reload);
    done();
}));


// gulp.task('watch', function() {
//    gulp.watch(['sass']);
// });

gulp.task('default', gulp.series('sass', 'server'));

非常感谢你的帮助@mark让我试试这个谢谢。经过大量研究,我发现gulp 4手表可以工作。非常感谢您的帮助@mark让我试试。非常感谢。经过大量研究,我发现Gulp4手表可以工作。