78 lines
1.4 KiB
Markdown
78 lines
1.4 KiB
Markdown
# get-port [![Build Status](https://travis-ci.org/sindresorhus/get-port.svg?branch=master)](https://travis-ci.org/sindresorhus/get-port)
|
|
|
|
> Get an available [TCP port](https://en.wikipedia.org/wiki/Port_(computer_networking))
|
|
|
|
|
|
## Install
|
|
|
|
```
|
|
$ npm install get-port
|
|
```
|
|
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const getPort = require('get-port');
|
|
|
|
(async () => {
|
|
console.log(await getPort());
|
|
//=> 51402
|
|
})();
|
|
```
|
|
|
|
Pass in a preferred port:
|
|
|
|
```js
|
|
(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:
|
|
|
|
```js
|
|
(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
|
|
})();
|
|
```
|
|
|
|
## API
|
|
|
|
### getPort([options])
|
|
|
|
Returns a `Promise` for a port number.
|
|
|
|
#### options
|
|
|
|
Type: `Object`
|
|
|
|
##### port
|
|
|
|
Type: `number | number[]`
|
|
|
|
A preferred port or an array 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.
|
|
|
|
|
|
## Beware
|
|
|
|
There is a very tiny chance of a race condition if another service starts using the same port number as you in between the time you get the port number and you actually start using it.
|
|
|
|
|
|
## Related
|
|
|
|
- [get-port-cli](https://github.com/sindresorhus/get-port-cli) - CLI for this module
|
|
|
|
|
|
## License
|
|
|
|
MIT © [Sindre Sorhus](https://sindresorhus.com)
|