gulp监视节点app.listen()被调用或端口(livereload,nodejs和gulp)

Kar*_*son 4 node.js livereload gulp gulp-livereload

我正在尝试gulp-livereload使用我的nodejs服务器.我gulp-nodemon用来在更改文件后重启服务器,这是有效的.我livereload.reload()在正确的时间调用时遇到问题.

我目前正在调用livereload.reload().on('start'...gulpfile.js(每当我的nodemon启动脚本).这可行,但需要几秒钟.原因是当nodemon开始运行它调用脚本的NodeJS livereload.listen() 的脚本已经调用app.listen(port),所以我没有在服务器浏览器refreshs准备好.

有没有办法监听nodejs nodemon脚本是否已调用app.listen(port)或者可能监听是否正在使用特定端口?

我已经解决了一个小睡眠的问题,但它只是感觉如此错误和肮脏.

Dai*_*ima 5

使用可读事件来监视子进程的stdout.

例:

nodemon({script: 'app.js',
         nodeArgs: ['--harmony'],
         stdout: false})
    .on('readable', function(data) {
        this.stdout.on('data', function(chunk) {
            if (/koa server listening/.test(chunk)) {
                console.log('livereload');
                livereload.reload();
            }
            process.stdout.write(chunk);
        });
        this.stderr.pipe(process.stderr);
    });
Run Code Online (Sandbox Code Playgroud)

app.js

app.listen(3000, function(err) {
    console.log('koa server listening');
});
Run Code Online (Sandbox Code Playgroud)