Skip to content

learnbuildrepeat/portess

Folders and files

NameName
Last commit message
Last commit date
Aug 2, 2019
Aug 2, 2019
Jul 10, 2019
Jul 14, 2019
Jul 10, 2019
Jul 13, 2019
Jul 13, 2019
Aug 2, 2019
Jul 10, 2019
Aug 2, 2019
Jun 27, 2019
Sep 23, 2021
May 28, 2021
Jul 10, 2019
Jun 27, 2019

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