When working with many dev servers, you have to increment and remember ports (e.g. http://localhost:3000, http://localhost:4000, ...).
With minihost, you don't have to think about that.
Works on Windows, Linux and OS X.
Install:
npm install -g minihost
Prefix your commands with h:
~/one$ h -- nodemon
~/two$ h -- npm startYou can then view your running servers on http://localhost:2000 and access them locally on http://<name>*:2000 using any host that resolves to 127.0.0.1.
For example:
# Using dnsmasq and a local .dev domain
# Or /etc/hosts
http://one.dev:2000
http://two.dev:2000Public wildcard domain names that resolves to 127.0.0.1 are also supported and can be used without any system configuration:
# See til.io
http://one.til.io:2000
http://two.til.io:2000
# See xip.io
http://one.127.0.0.1.xip.io:2000
http://two.127.0.0.1.xip.io:2000To set a custom name, add -n:
~/one$ h -n app -- nodemonTo set a custom port environment variable name (instead of default PORT), add it after colon in custom name:
~/one$ h -n app:APP_PORT -- nodemonTo enable multiple names and ports repeat -n option:
~/one$ h -n app1:APP1_PORT -n app2:APP_PORT1 -- nodemonIf custom env variable names for ports not defined, PORT_0, PORT_1, ... will be used.
To change the port minihost listens to, run:
echo 8000 > ~/.minihostFor minihost to work, your server need to listen on the PORT environment variable.
From your code:
// KO
app.listen(3000);
// OK
app.listen(process.env.PORT || 3000);Or from the command-line:
h -- 'cmd -p $PORT' # Linux, OS X
h -- "cmd -p %PORT%" # WindowsMIT - Typicode