Gulp - Watch and Reload a Node Server


This page shows showcase how to reload a node http server with the watch possibility of gulp


Below is an example of gulp.esm.js file that show case how to do it. You can adapt it to your situation.

// automatically loads when you run the gulp command
import gulp from "gulp";
import {spawn} from "child_process";
import tcpPortUsed from 'tcp-port-used';

// the server process variable
let serverProcess;

// the port
let port = 3000;

export async function server() {

    serverProcess = await restartServer(serverProcess);
    console.log(`Node server (re)started at http://localhost:${port}:`);


// The code that start or restart the process
async function restartServer(serverProcess) {

    // kill previous spawned process
    if (serverProcess) {
        await tcpPortUsed.waitUntilFree(port, 500, 4000)
        console.log('Server process has been terminated');


    // `spawn` a child `gulp` process linked to the parent `stdio`
    serverProcess = spawn('node', ['src/server-start.js', port]);

    serverProcess.stdout.on('data', (data) => {
        console.log(`Server Stdout: ${data}`);

    serverProcess.stderr.on('data', (data) => {
        console.error(`Server Stderr: ${data}`);

    return serverProcess;

// The default 
export default async function () {

    await'src/**/*.*', server);


Powered by ComboStrap