What is http-server?
The http-server npm package is a simple, zero-configuration command-line HTTP server. It is powerful enough for production usage, but it's simple and hackable enough to be used for testing, local development, and learning.
What are http-server's main functionalities?
Serving static files
This command serves the current directory at localhost:8080. It can be used to view static websites or any static files.
http-server -p 8080
Customizable port
This command serves the current directory on a specified port, in this case, port 3000.
http-server -p 3000
Specify the directory to serve
This command serves the specified directory instead of the current directory.
http-server /path/to/directory
HTTPS support
This command serves the current directory over HTTPS using the specified certificate and key files.
http-server --ssl --cert path/to/cert.pem --key path/to/key.pem
Enable CORS
This command serves files with CORS enabled, allowing resources to be requested from another domain.
http-server -c-1 --cors
Other packages similar to http-server
serve
Similar to http-server, serve is a static file serving and directory listing package. It is also simple to use but comes with a few more features like clean URLs and single-page application (SPA) support.
lite-server
Lite-server is a lightweight development only node server that serves a web app, opens it in the browser, and refreshes when html or javascript files change. It is built on top of BrowserSync and is more tailored towards serving SPAs.
express
Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. Unlike http-server, Express requires more setup but is much more powerful and extensible.
http-server: a command-line http server
http-server
is a simple, zero-configuration command-line http server. It is powerful enough for production usage, but it's simple and hackable enough to be used for testing, local development, and learning.
Installing globally:
Installation via npm
:
npm install http-server -g
This will install http-server
globally so that it may be run from the command line.
Usage:
http-server [path] [options]
[path]
defaults to ./public
if the folder exists, and ./
otherwise.
Now you can visit http://localhost:8080 to view your server
Available Options:
-p
Port to use (defaults to 8080)
-a
Address to use (defaults to 0.0.0.0)
-d
Show directory listings (defaults to 'True')
-i
Display autoIndex (defaults to 'True')
-g
or --gzip
When enabled (defaults to 'False') it will serve ./public/some-file.js.gz
in place of ./public/some-file.js
when a gzipped version of the file exists and the request accepts gzip encoding.
-e
or --ext
Default file extension if none supplied (defaults to 'html')
-s
or --silent
Suppress log messages from output
--cors
Enable CORS via the Access-Control-Allow-Origin
header
-o
Open browser window after starting the server
-c
Set cache time (in seconds) for cache-control max-age header, e.g. -c10 for 10 seconds (defaults to '3600'). To disable caching, use -c-1.
-U
or --utc
Use UTC time format in log messages.
-P
or --proxy
Proxies all requests which can't be resolved locally to the given url. e.g.: -P http://someurl.com
-S
or --ssl
Enable https.
-C
or --cert
Path to ssl cert file (default: cert.pem).
-K
or --key
Path to ssl key file (default: key.pem).
-r
or --robots
Provide a /robots.txt (whose content defaults to 'User-agent: *\nDisallow: /')
-h
or --help
Print this list and exit.
Development
Checkout this repository locally, then:
$ npm i
$ node bin/http-server
Now you can visit http://localhost:8080 to view your server
You should see the turtle image in the screenshot above hosted at that URL. See
the ./public
folder for demo content.