`get-port` is a simple yet powerful Node.js package used for finding available ports on your machine. This can be incredibly useful in various scenarios such as running servers, automated tests, and creating development environments.
Basic Usage
Installing `get-port` is straightforward:
npm install get-port
Here’s a basic example of how to use `get-port` to find an available port:
const getPort = require('get-port'); (async () => { const port = await getPort(); console.log(port); })();
Specify a Range of Ports
Sometimes you might want to find a port within a specific range:
(async () => { const port = await getPort({ port: getPort.makeRange(3000, 4000) }); console.log(port); })();
Preferred Ports
You can specify preferred ports, and `get-port` will try to use them before falling back:
(async () => { const port = await getPort({ port: [3000, 3001, 3002] }); console.log(port); })();
Use Case: Setting Up a Development Server
You can dynamically assign an available port to your development server:
const express = require('express'); const getPort = require('get-port'); const app = express(); (async () => { const port = await getPort(); app.listen(port, () => { console.log(`Server is running on port ${port}`); }); })();
Use Case: Running Concurrent Tests
If you are running concurrent tests, you can assign different ports to avoid conflicts:
const getPort = require('get-port'); async function runTest() { const port = await getPort(); // Assuming 'runServerTest' is a function that runs your tests on the specified port runServerTest(port); } for (let i = 0; i < 5; i++) { runTest(); }
Error Handling
Make sure to handle errors while using `get-port`:
const getPort = require('get-port'); (async () => { try { const port = await getPort(); console.log(port); } catch (error) { console.error('Could not get a port:', error); } })();
By integrating `get-port` into your Node.js applications, you can ensure dynamic and conflict-free port assignment, making your development experience smoother.
Hash: ee7efab139d35a979f74af0fd7ad8b05b964d41e5ce285e9e43d47330b9fa1c0