Revela

Plugins

Plugins add features to Revela. In the Standalone edition all official plugins are already built in, so there is nothing to install. The Full edition installs them as packages from the bundled packages/ folder or from the .nupkg files attached to each GitHub Release; they are not published on NuGet.org yet.

What the official plugins do

๐Ÿ“ฆ Compression

Pre-compress HTML, CSS, and JS with Gzip and Brotli for 70-95% smaller files.

๐Ÿ“Š Statistics

Analyze EXIF data from your photos โ€“ cameras, lenses, apertures, ISO, and timeline.

๐ŸŒ Dev Server

Preview your generated site locally during development.

โ˜๏ธ OneDrive Source

Sync photos from OneDrive shared folders directly into your project.

๐Ÿ“… Availability Calendar

Show booked and free days from an iCal file as a month calendar.

๐Ÿ”— Calendar Feeds

Download iCal feeds from your booking tool into your project before each build.

Official Plugins

Plugin Package Description
Compression Spectara.Revela.Plugins.Compress Pre-compress static files with Gzip and Brotli
Statistics Spectara.Revela.Plugins.Statistics Generate EXIF statistics pages
Serve Spectara.Revela.Plugins.Serve Local development server
OneDrive Spectara.Revela.Plugins.Source.OneDrive Download photos from OneDrive shared folders
Calendar Spectara.Revela.Plugins.Calendar Availability calendar (booked/free days) from iCal .ics files
Source.Calendar Spectara.Revela.Plugins.Source.Calendar Download iCal feeds (e.g. booking exports) into the source folder

The Lumina theme has two matching extensions: Lumina.Statistics and Lumina.Calendar.

All Spectara.Revela.* release packages come with a SHA256SUMS file and Sigstore (cosign) signatures on the GitHub Release.

Installing Plugins

How you get plugins depends on your edition:

The rest of this page applies to the Full edition and the .NET tool.

# Install by short name
revela plugin install Statistics

# Or use full package ID
revela plugin install Spectara.Revela.Plugins.Statistics

# Install a specific version
revela plugin install Statistics --version 1.2.0

Installing records the package and its exact installed version under dependencies.packages in exactly one file: project.json when you run it inside a project, otherwise your global revela.json (see Configuration). Uninstalling removes it from the same file. Themes and theme extensions are installed with revela theme install, not plugin install.

Managing Plugins

# List installed plugins
revela plugin list

# Remove a plugin
revela plugin uninstall Statistics

# Refresh the package index and search it
revela packages refresh
revela packages search --type plugin

Configuration

Plugins store their settings in project.json below plugins, each under its own key (serve, statistics, oneDrive, calendarFeeds). This works the same in every edition:

{
  "plugins": {
    "statistics": {
      "maxEntriesPerCategory": 15,
      "sortByCount": true
    },
    "serve": {
      "port": 8080
    }
  }
}

Settings can also be overridden with environment variables (SPECTARA__REVELA__PLUGINS__<KEY>__<SETTING>):

SPECTARA__REVELA__PLUGINS__SERVE__PORT=3000

Community Plugins

In the Full edition and the .NET tool, Revela supports third-party plugins from any NuGet source that uses https://, or from a local folder. Community plugins use their own package prefix:

# Install from custom NuGet feed
revela plugin install MyPlugin --source https://my-feed.example.com/v3/index.json

Note: Community plugins are not verified by Spectara. Install at your own risk.

Restoring Dependencies

In the Full edition and the .NET tool, use restore after cloning a project, updating Revela, or sharing your project with someone else, to install all required themes and plugins:

# Install missing themes and plugins
revela restore

# Check only (don't install)
revela restore --check

Revela reads dependencies.packages and theme.name from your configuration (global revela.json plus project.json) and installs anything that's missing. Every package in dependencies.packages is required, whatever its ID; installed packages are matched by package ID across plugins and themes. Restoring pins the exact installed version for the entries project.json declares; packages from your global revela.json are installed without being copied into the project.

Feeds declared only in project.json are never used silently. Restore lists them and asks for confirmation; in scripts and CI, where Revela cannot ask, it stops unless you pass --allow-project-feeds:

revela restore --allow-project-feeds