Skip to content

learnbuildrepeat/portess

Repository files navigation

Portess

Port and process management

Build Status Commitizen friendly semantic-release

This library helps to find open ports and monitor, find and manage process states.

Installation

npm install --save portess

API

portess.port.isOpen(port)

Finds if the port is open. Return value will be a promise that will be yielded with a boolean result.

const portess = require('portess');

await portess.port.isOpen(3000); // true/false

/***************(or)**************/

portess.port.isOpen(3000)
    .then( isOpen => {
        console.log(`Port 3000 is %s`, isOpen?'open':'in use');
    });

portess.port.get(?[ports])

Get a random open port (or) first available port from the given list. Retuns a promise that will be yielded with a port number.

const portess = require('portess');

await portess.port.get(); // Returns random port number - ex: 44450
await portess.port.get([3000, 3010, 4010]);  // Returns first available port from the given list- ex: 3010 (if 3000 is in use)

/***************(or)**************/

portess.port.get() 
    .then( port => {
        console.log(`Port %s is open`, port);
    });

portess.port.get([3000, 3010,4010]) 
    .then( port => {
        console.log(`Port %s is open`, port);
    });

portess.process.isRunning(pid)

Identifies if a process state is active. Returns boolean

const portess = require('portess');

portess.process.isRunning(55432); // true if the process is running

portess.process.kill(pid)

Kill a process by pid

const portess = require('portess');

portess.process.kill(55432); // false : If the process is not found

portess.monitor(ports...)

Monitor is an EventEmitter that emits open when a monitored port is available and close when the port has closed.

var portess = require('portess');
var monitor = new portess.Monitor([8888,9999, 8082]);

monitor.on('open', function(port){
  console.log('Port %s is open', port);
});

monitor.on('close', function(port){
  console.log('Port %s is closed', port);
});

setTimeout(function(){
  monitor.stop(); // Stops the monitoring after 5 seconds
}, 5000);

CLI

You can use portess as a command line utility. You just have to install it globally as npm install -g portess and run help command portess --help to find the options and usage.

Usage: portess [options] [command]

Options:
  -V, --version         output the version number
  -h, --help            output usage information

Commands:
  isOpen|o <port>       Find if a port is open or closed
  get|g                 Get an available port
  isRunning|r <pid>     Find if a process is active or not
  kill|k <pid>          Kill a process by pid
  monitor|m <ports...>  Monitor a list of ports and logs to the terminal when port state had changed