我正在尝试创建包含nodemon,typescript和browsersync的gulp工作流程。当我尝试使用browsersync重新加载浏览器时,浏览器会在快速服务器有机会完成创建路由等之前重新加载。所以最后我必须手动重新加载浏览器(f5)。我试图在配置中使用gulp-nodemon事件,gulp.watch()和gulp-nodemon任务。一切都无济于事。我认为如果可能的话,我可以通知nodemon Express已准备好并手动触发页面加载,甚至可以通过express来通知浏览器中的browsersync重新加载页面。
为简单起见,这是我的gulpfile的一个小版本:
const browser = require('browser-sync');
gulp.task('typescript', function(){
return gulp.src(config.src + '/**/*.ts')
.pipe(tsProject())
.pipe(gulp.dest(config.dist));
});
gulp.task('server', function (done) {
// Create nodemon instance
$.nodemon({
script: config.dist + '/app.js',
watch: config.src + '/**/*',
ext: '*.*',
env: {
'NODE_ENV': 'development'
},
tasks: ['typescript']
}).on('start',function(done){
browser.reload();
});
done();
});
gulp.task('sync', function (done) {
// Init browser-sync
browser.init({
port: 3000,
proxy: 'localhost:8000'
});
done();
};
gulp.task('default', gulp.series(clean, 'typescript', 'server', 'sync'));
大多数情况下一切正常。 TypeScript转换,Nodemon开始为Express应用程序提供服务,BrowserSync成功启动。在Typescript转换的更改中,Nodemon重新启动Express应用程序,并重新加载BrowserSync。问题是在Express有机会开始侦听连接之前,BrowserSync会重新加载。有什么建议?