如何在Express服务器启动时通过回调向NodeJS(Gulp Specific)发出信号?

时间:2017-05-02 23:56:10

标签: express typescript gulp browser-sync nodemon

我正在尝试创建包含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会重新加载。有什么建议?

0 个答案:

没有答案