Gulp监听,等待任务

4

我希望能够同时观看多个文件,当它们发生变化时,我希望运行MsBuild,并在构建完成后使用BrowserSync进行重新加载。到目前为止,我已经有了这个“监视器”:

gulp.watch([config.templatePath+'/**/*','!'+config.templatePath+'/assets/stylesheets/**/*'],['build']).on('change', function(file) {
    browsersync.reload(file);
});

这个构建任务:

gulp.task('build', function() {
    return gulp
        .src(config.projectFile)
        .pipe(msbuild({
            toolsVersion: 12.0
        }));
});

这个功能可以正常工作,但是在构建完成之前浏览器就已经重新加载了。一开始我以为是gulp-msbuild的问题,但后来发现我忘记加上return,可以看这里:https://github.com/hoffi/gulp-msbuild/issues/8
构建任务在重新加载之前被触发,但它不会等待直到构建完成。有什么解决方法吗?
提前感谢!
1个回答

3

你需要一个单独的任务来完成这个,比如 build_reload

gulp.task('build_reload', function() {
    return gulp
        .src(config.projectFile)
        .pipe(msbuild({
            toolsVersion: 12.0
        }))
        .on('end', function() {
            browsersync.reload();
        }));;
});

然后将 watch 任务更改为:

gulp.watch([config.templatePath + '/**/*', '!' + config.templatePath + '/assets/stylesheets/**/*'], ['build_reload']);

这样做只有在所有内容完成后才会重新加载。


2
或 .on('end', browsersync.reload) - light24bulbs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接