1 | ![](https://assets.vercel.com/image/upload/v1527770721/repositories/serve/serve-repo-banner.png)
|
2 |
|
3 | <a aria-label="Vercel logo" href="https://vercel.com">
|
4 | <img src="https://img.shields.io/badge/MADE%20BY%20Vercel-000000.svg?style=for-the-badge&logo=ZEIT&labelColor=000000&logoWidth=20">
|
5 | </a>
|
6 |
|
7 | [![Build Status](https://circleci.com/gh/vercel/serve.svg?&style=shield)](https://circleci.com/gh/vercel/serve)
|
8 | [![Install Size](https://packagephobia.now.sh/badge?p=serve)](https://packagephobia.now.sh/result?p=serve)
|
9 |
|
10 | Assuming you would like to serve a static site, single page application or just a static file (no matter if on your device or on the local network), this package is just the right choice for you.
|
11 |
|
12 | Once it's time to push your site to production, we recommend using [Vercel](https://vercel.com).
|
13 |
|
14 | In general, `serve` also provides a neat interface for listing the directory's contents:
|
15 |
|
16 | ![Screenshot](https://user-images.githubusercontent.com/6170607/140353065-414bb2a7-33fb-4319-b359-f5e22edb860b.png)
|
17 |
|
18 | ## Usage
|
19 |
|
20 | The quickest way to get started is to just run `npx serve` in your project's directory.
|
21 |
|
22 | If you prefer, you can also install the package globally using [Yarn](https://yarnpkg.com/en/) (you'll need at least [Node.js LTS](https://nodejs.org/en/)):
|
23 |
|
24 | ```bash
|
25 | yarn global add serve
|
26 | ```
|
27 |
|
28 | Once that's done, you can run this command inside your project's directory...
|
29 |
|
30 | ```bash
|
31 | serve
|
32 | ```
|
33 |
|
34 | ...or specify which folder you want to serve:
|
35 |
|
36 | ```bash
|
37 | serve folder_name
|
38 | ```
|
39 |
|
40 | Finally, run this command to see a list of all available options:
|
41 |
|
42 | ```bash
|
43 | serve --help
|
44 | ```
|
45 |
|
46 | Now you understand how the package works! :tada:
|
47 |
|
48 | ## Configuration
|
49 |
|
50 | To customize `serve`'s behavior, create a `serve.json` file in the public folder and insert any of [these properties](https://github.com/vercel/serve-handler#options).
|
51 |
|
52 | ## API
|
53 |
|
54 | The core of `serve` is [serve-handler](https://github.com/vercel/serve-handler), which can be used as middleware in existing HTTP servers:
|
55 |
|
56 | ```js
|
57 | const handler = require('serve-handler');
|
58 | const http = require('http');
|
59 |
|
60 | const server = http.createServer((request, response) => {
|
61 | // You pass two more arguments for config and middleware
|
62 | // More details here: https://github.com/vercel/serve-handler#options
|
63 | return handler(request, response);
|
64 | })
|
65 |
|
66 | server.listen(3000, () => {
|
67 | console.log('Running at http://localhost:3000');
|
68 | });
|
69 | ```
|
70 |
|
71 | **NOTE:** You can also replace `http.createServer` with [micro](https://github.com/vercel/micro), if you want.
|
72 |
|
73 | ## Contributing
|
74 |
|
75 | 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
|
76 | 2. Uninstall `serve` if it's already installed: `npm uninstall -g serve`
|
77 | 3. Link it to the global module directory: `npm link`
|
78 |
|
79 | After that, you can use the `serve` command everywhere. [Here](https://github.com/vercel/serve/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+for+beginners%22)'s a list of issues that are great for beginners.
|
80 |
|
81 | ## Credits
|
82 |
|
83 | This project used to be called "list" and "micro-list". But thanks to [TJ Holowaychuk](https://github.com/tj) handing us the new name, it's now called "serve" (which is much more definite).
|
84 |
|
85 | ## Author
|
86 |
|
87 | Leo Lamprecht ([@notquiteleo](https://twitter.com/notquiteleo)) - [Vercel](https://vercel.com)
|