Skip to content

Instantly share code, notes, and snippets.

@mistercoffee66
Created October 26, 2023 20:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mistercoffee66/716e483cc7f05708871d90123bb72067 to your computer and use it in GitHub Desktop.
Save mistercoffee66/716e483cc7f05708871d90123bb72067 to your computer and use it in GitHub Desktop.
Set webpack dev server to use next avail open port in a range
const net = require('net');
const getOpenPort = async (port, maxPort) => {
const isPortAvail = (currentPort) => new Promise((resolve, reject) => {
const tester = net.createServer()
.once('error', (err) => (err.code === 'EADDRINUSE' ? resolve(false) : reject(err)))
.once('listening', () => tester.once('close', () => resolve(true)).close())
.listen(currentPort);
});
/* eslint-disable-next-line */
console.log(`Trying port ${port}`);
if (await isPortAvail(port)) {
return port;
}
if (port < maxPort) {
return getOpenPort(port + 1, maxPort);
}
return new Error('no avail port');
};
// truncated config
module.exports = {
devServer: {
port: await getOpenPort(51256, 51259)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment