Acquire a consistent guaranteed-to-be-free port number for your dev server or whatever else, no memorizing required!
npm install acquire-port
BEFORE acquire-port:
``shProject 1
$ next -p 3004
AFTER acquire-port:
`sh
Optional: install acquire-port in your path
$ npm install -g acquire-portProject 1
$ next -p acquire-port proj1 # Port AProject 2
$ gatsby develop -p ap proj2 # Port B
ap is synonymous with acquire-port!Project 3
$ node expressapp.js -p npx -q acquire-port p3 # Or don't install acquire-port at allA week later, starting a new project...
Project 4
$ ./koaapp.js --port ap project-4 # Port DClose the project... come back to it a few weeks later
$ ./koaapp.js --port ap project-4 # Port D (same port as before)And in another window, we want to start another dev instance without problems
$ ./koaapp.js --port ap project-4 # Will run on the next available port temporarilyYou don't even need an id. Call acquire-port by itself and it'll use the directory name
as the id automatically. Easy peasy!
$ cd ~/repos/freelance/shiny-new-react-app
$ npm run dev -p ap
Same as: npm run dev -p
acquire-port shiny-new-react-app
`acquire-port takes in an identifier (id) and spits out a mapped port number.
Subsequent calls using the same id will get the same port number again and
again. The only exception is when the originally mapped port is being used by
another process, in which case acquire-port temporarily returns the next least
unused port using detect-port.
Once the originally mapped port is no longer in use, later calls with the same
id will return it.Port numbers start at 3000. You can change/delete your port mappings and/or
choose the next starting port in the
_portmap.json configuration file found at
~/.config/_portmap.json.This is useful if, like me, you're running any dozen dev servers off the same
rig simultaneously and like to have consistent port numbers for your projects
with the added flexibility of temporary port assignments when necessary. I use
it in my
package.json files, composer scripts, shell scripts, and other places
like so:`json
{
...
"scripts": {
"dev": "next -p acquire-port"
}
}
`Or with npx, so users who don't have acquire-port installed globally can still
call
npm run dev without an issue:`json
{
...
"scripts": {
"dev": "next -p npx -q acquire-port"
}
}
`> Note: using npx might add overhead to your program's start time. To make
npx return instantaneously, ensure acquire-port is installed
> globally.Installation and Usage
`sh
$ npm install -g acquire-port
$ acquire-port ident
$ port ident
$ port
`This tool can also be used via npx without installing anything:
`sh
$ echo npx acquire-port ident
`Though, this will add a few seconds to your program's start time. To avoid this,
ensure
acquire-port` is installed globally.