2016-08-06 05:40:00 +08:00
|
|
|
# The serve command
|
|
|
|
|
2018-08-03 05:52:54 +08:00
|
|
|
The serve command is used to preview a book by serving it over HTTP at
|
2018-08-03 10:34:26 +08:00
|
|
|
`localhost:3000` by default. Additionally it watches the book's directory for
|
|
|
|
changes, rebuilding the book and refreshing clients for each change. A websocket
|
|
|
|
connection is used to trigger the client-side refresh.
|
2016-08-06 05:40:00 +08:00
|
|
|
|
2018-09-06 23:24:56 +08:00
|
|
|
***Note:*** *The `serve` command is for testing a book's HTML output, and is not
|
|
|
|
intended to be a complete HTTP server for a website.*
|
|
|
|
|
2016-08-06 05:40:00 +08:00
|
|
|
#### Specify a directory
|
|
|
|
|
2018-08-03 05:52:54 +08:00
|
|
|
The `serve` command can take a directory as an argument to use as the book's
|
|
|
|
root instead of the current working directory.
|
2016-08-06 05:40:00 +08:00
|
|
|
|
|
|
|
```bash
|
|
|
|
mdbook serve path/to/book
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Server options
|
|
|
|
|
2018-08-03 05:52:54 +08:00
|
|
|
`serve` has four options: the HTTP port, the WebSocket port, the HTTP hostname
|
|
|
|
to listen on, and the hostname for the browser to connect to for WebSockets.
|
2016-08-06 05:40:00 +08:00
|
|
|
|
2018-08-03 05:52:54 +08:00
|
|
|
For example: suppose you have an nginx server for SSL termination which has a
|
2018-08-03 10:34:26 +08:00
|
|
|
public address of 192.168.1.100 on port 80 and proxied that to 127.0.0.1 on port
|
|
|
|
8000\. To run use the nginx proxy do:
|
2016-08-06 05:40:00 +08:00
|
|
|
|
|
|
|
```bash
|
2018-08-03 05:52:54 +08:00
|
|
|
mdbook serve path/to/book -p 8000 -n 127.0.0.1 --websocket-hostname 192.168.1.100
|
2016-08-06 05:40:00 +08:00
|
|
|
```
|
|
|
|
|
2018-08-03 05:52:54 +08:00
|
|
|
If you were to want live reloading for this you would need to proxy the
|
|
|
|
websocket calls through nginx as well from `192.168.1.100:<WS_PORT>` to
|
|
|
|
`127.0.0.1:<WS_PORT>`. The `-w` flag allows for the websocket port to be
|
|
|
|
configured.
|
2016-08-06 05:40:00 +08:00
|
|
|
|
2017-01-02 01:42:47 +08:00
|
|
|
#### --open
|
|
|
|
|
2019-04-12 22:53:21 +08:00
|
|
|
When you use the `--open` (`-o`) flag, mdbook will open the book in your
|
2018-08-03 10:34:26 +08:00
|
|
|
default web browser after starting the server.
|
2017-01-02 01:42:47 +08:00
|
|
|
|
2017-01-17 08:11:39 +08:00
|
|
|
#### --dest-dir
|
|
|
|
|
2018-08-03 10:34:26 +08:00
|
|
|
The `--dest-dir` (`-d`) option allows you to change the output directory for the
|
2018-09-06 23:24:42 +08:00
|
|
|
book. Relative paths are interpreted relative to the book's root directory. If
|
|
|
|
not specified it will default to the value of the `build.build-dir` key in
|
|
|
|
`book.toml`, or to `./book`.
|
2020-03-11 01:32:12 +08:00
|
|
|
|
|
|
|
#### Specify exclude patterns
|
|
|
|
|
|
|
|
The `serve` command will not automatically trigger a build for files listed in
|
|
|
|
the `.gitignore` file in the book root directory. The `.gitignore` file may
|
|
|
|
contain file patterns described in the [gitignore
|
|
|
|
documentation](https://git-scm.com/docs/gitignore). This can be useful for
|
|
|
|
ignoring temporary files created by some editors.
|
|
|
|
|
|
|
|
_Note: Only `.gitignore` from book root directory is used. Global
|
|
|
|
`$HOME/.gitignore` or `.gitignore` files in parent directories are not used._
|