Serve - RevealPack Documentation

Skip to content

# `revealpack serve`

The `serve` command sets up a live server to serve the built presentations, enabling live editing and automatic rebuilding when changes are detected. This command watches the specified presentation directories for changes and triggers a rebuild when necessary. It also starts an HTTP server to serve the presentations.

## Options

- `--root <directory>`: Specifies the root directory for the serve operation. Defaults to the current working directory.

## Process Overview

1. Read and Parse Configuration: The `serve` command reads the configuration options from the `config.json` file located in the specified root directory.

2. Initialize Logging: Logging is set up based on the configuration to track the server's activities and any issues that arise.

3. Setup Watcher: A watcher is set up to monitor the specified presentation directories. The watcher uses the `watchdog` library to detect changes in the file system.

4. Trigger Build on Changes: When changes are detected in the presentation files, the watcher triggers a rebuild of the presentations using the `build` command. This process is debounced to avoid multiple rapid triggers and includes a cooldown period to prevent frequent builds.

5. Start HTTP Server: An HTTP server is started to serve the presentations from the build directory. The server is configured to automatically open the default web browser to the served presentations.

## Expected Behavior

- Live Reloading: The command enables live reloading of presentations. When changes are made to the source files, the presentations are automatically rebuilt, and the changes are reflected in the browser.

- Debounced Build Triggers: The watcher debounces build triggers to prevent multiple rapid rebuilds. It ensures that only one build is triggered within the specified debounce delay and cooldown time.

- Logging: All activities, including file modifications, build triggers, and server status, are logged for debugging and tracking purposes.

- HTTP Server: The command starts an HTTP server to serve the presentations from the build directory. The server can be accessed via the default web browser.

## Example Usage

    revealpack serve --root /path/to/project

This command will read the `config.json` from `/path/to/project`, set up a watcher on the specified presentation directories, and start an HTTP server to serve the presentations.

## Note on Watcher Configuration

The watcher monitors the directories specified in the configuration:

- watch_directory: The directory containing the presentation subdirectories. Defined as `<root>/config.directories.source.root/config.directories.source.presentation_root`.
- build_directory: The output directory for the built presentations. Defined as `<root>/config.directories.build`.

By following this process, the `serve` command ensures that the presentations are automatically rebuilt and served, providing a seamless1 live editing experience.

1. To see changes to a current slide, you may have to refresh the browser window. ↩