Volt.HMR (Volt v0.20.0)

Copy Markdown View Source

Public helpers for broadcasting Volt HMR messages.

These functions are intended for packages that compose Volt's dev server but own additional source graphs, such as static-site generators. They expose the same websocket protocol used internally by Volt.Watcher without requiring callers to reach into Volt's registry implementation.

Summary

Functions

Broadcast an HMR message to all connected clients.

Clear the errors reported for a source path, hiding the overlay when none remain.

Ask open pages to check whether their server-rendered HTML changed.

Report the errors for a source path and show them in connected browsers.

Broadcast a full page reload request for a changed path.

Invalidate Volt's dev compilation state for a source file without broadcasting.

Broadcast a style-only update for a changed stylesheet path.

Broadcast an update for a changed path.

Functions

broadcast(type, payload \\ nil, opts \\ [])

Broadcast an HMR message to all connected clients.

clear_error(path, opts \\ [])

@spec clear_error(
  String.t(),
  keyword()
) :: :ok

Clear the errors reported for a source path, hiding the overlay when none remain.

document_update(path, opts \\ [])

Ask open pages to check whether their server-rendered HTML changed.

Use this for templates and content, which may affect any page or none. Pages that carry an entity tag reload only when their HTML changed; see Volt.HMR.Document. Other pages reload.

error(path, reason, opts \\ [])

@spec error(String.t(), term(), keyword()) :: :ok

Report the errors for a source path and show them in connected browsers.

reason may be OXC.Diagnostic maps, messages, exceptions, or any other term; see Volt.Dev.Error.entries/2. The errors stay current until clear_error/2, so browsers that connect later show them too.

Options

  • :session — the development session. Default: :default
  • :title — the overlay heading for these errors, such as "Render error". Default: "Build error"

full_reload(path, opts \\ [])

Broadcast a full page reload request for a changed path.

invalidate_file(path, opts \\ [])

Invalidate Volt's dev compilation state for a source file without broadcasting.

style_update(path, opts \\ [])

Broadcast a style-only update for a changed stylesheet path.

update(path, changes, opts \\ [])

@spec update(String.t(), [atom() | String.t()], keyword()) :: :ok

Broadcast an update for a changed path.