【问题标题】:Gulp watch, wait for taskGulp watch,等待任务
【发布时间】:2015-02-18 09:24:33
【问题描述】:

我想查看多个文件,当它们发生变化时,我想运行 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

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

提前致谢!

【问题讨论】:

    标签: javascript msbuild gulp browser-sync


    【解决方案1】:

    你需要一个单独的任务,比如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']);
    

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

    【讨论】:

    • 或 .on('end', browsersync.reload)
    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 2015-03-11
    • 2015-07-14
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多