使用connect在Gulp中创建动态服务器

creating dynamic servers in Gulp using connect

本文关键字:创建 动态 服务器 Gulp connect 使用      更新时间:2023-09-26

在Gulp中创建服务器端口之前,是否可以检查该端口是否被占用?

我现在正在做这个:

/**
 * Start LiveReload Server
 */
gulp.task('connect', function() {
    var connect = require('connect'),
        app = connect()
        .use(require('connect-livereload')({ port: liveReloadPort }))
        .use(connect.static('app'))
        .use(connect.static('.tmp'))
        .use(connect.directory('app'));
    require('http').createServer(app)
        .listen(serverPort)
        .on('listening', function () {
            console.log('Started connect web server on http://localhost:' + serverPort);
        });
});
gulp.task('serve', ['connect', 'styles'], function() {
    require('opn')('http://localhost:' + serverPort);
});

我希望能够让服务器端口是动态的,并检查该端口是否已经在使用中。这可能吗?

多亏了@IlanFrumer,我用它找到了解决方案。

实现方式如下:

var serverPort;
/**
 * Start LiveReload Server
 */
gulp.task('connect', function () {
    var portfinder = require('portfinder'),
        connect = require('connect'),
        app = connect()
        .use(require('connect-livereload')({ port: 35729 }))
        .use(connect.static('app'))
        .use(connect.static('.tmp'))
        .use(connect.directory('app'));
    portfinder.getPort(function (err, port) { 
        serverPort = port;
        require('http').createServer(app)
            .listen(port)
            .on('listening', function () {
                console.log('Started connect web server on http://localhost:' + port);
            });
    });
});
gulp.task('serve', ['connect', 'styles'], function () {
    require('opn')('http://localhost:' + serverPort);
});

在上述功能中还有其他因素,但它的实质就在那里。再次感谢@IlanFrumer!