port.js

Get an available port.

Usage no npm install needed!

<script type="module">
  import portJs from 'https://cdn.skypack.dev/port.js';
</script>

README

port.js

Get an available TCP port

Install

$ npm install port.js

Usage

const getPort = require('port.js');

(async () => {
    console.log(await getPort());
    //=> 51402
})();

Pass in a preferred port:

(async () => {
    console.log(await getPort({port: 3000}));
    // Will use 3000 if available, otherwise fall back to a random port
})();

Pass in an array of preferred ports:

(async () => {
    console.log(await getPort({port: [3000, 3001, 3002]}));
    // Will use any element in the preferred ports array if available, otherwise fall back to a random port
})();

Use the makeRange() helper in case you need a port in a certain range:

(async () => {
    console.log(await getPort({port: getPort.makeRange(3000, 3100)}));
    // Will use any port from 3000 to 3100, otherwise fall back to a random port
})();

API

getPort(options?)

Returns a Promise for a port number.

options

Type: object

port

Type: number | Iterable<number>

A preferred port or an iterable of preferred ports to use.

host

Type: string

The host on which port resolution should be performed. Can be either an IPv4 or IPv6 address.

getPort.makeRange(from, to)

Make a range of ports from...to.

Returns an Iterable for ports in the given range.

from

Type: number

First port of the range. Must be in the range 1024...65535.

to

Type: number

Last port of the range. Must be in the range 1024...65535 and must be greater than from.