2015-02-18 2 views
4

Я бы хотел посмотреть несколько файлов, когда они меняются, я хотел бы запустить MsBuild и перезапустить перезагрузку с помощью BrowserSync, когда сборка завершена. До сих пор я получил это «наблюдатель»:Gulp watch, wait for task

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.

Задача сборки запускается до перезагрузки, но она не ждет, пока она не будет завершена. Любые идеи, как это исправить?

Заранее благодарен!

ответ

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

таким образом, что это будет только после того, как перезагрузить все закончилось.

+0

Спасибо! Он отлично работает! – Roy

+0

добро пожаловать! – gibatronic

+1

или .on ('end', browsersync.reload) – light24bulbs