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/hofi/gulp-msbuild/issues/8 。

构建任务在重新加载之前被触发,但它不会等到它完成。任何想法如何解决这一问题?

提前致谢!

4

1 回答 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']);

这样它只会在一切完成后重新加载。

于 2015-02-25T20:39:58.597 回答