plasmoid
EN

Your first build

Let’s run a real build and look at what plasmoid produced.

Run it

plasmoid build --docs ./docs --site ./public --version 0.1.0

--version is optional. By default plasmoid reads the version from your project’s Cargo.toml ([versions] source = "cargo"); pass --version to override it or when the project isn’t Rust. See Versioning.

The output tree

public/
  index.html         # the landing (mounted static, markdown home, or redirect)
  docs/              # stable alias → current version's default locale
  latest/            # stable alias → current version
  0.1.0/  en/        # the actual rendered docs
  search/            # the sharded search index
  versions/          # the version index page
  archive/           # zipped versions older than `retain`
  assets/            # css, tiny js, fonts, highlight styles
  404.html           # custom not-found page

Every page is a real index.html at a clean URL path, e.g. 0.1.0/en/getting-started/quickstart/index.html serves at /0.1.0/en/getting-started/quickstart/.

Stable entry points

You don’t link people to a version-pinned path. plasmoid guarantees two stable aliases:

  • /docs/ → the current version’s default-locale docs.
  • /latest/ → the current version.

These are real path aliases, so deep links like /docs/getting-started/quickstart/ keep working across releases.

Rebuilds are in place

Re-running build for the same version overwrites /<version>/ — doc fixes between releases don’t spawn a new version. Bumping the version creates a new /<version>/ directory and rolls the older ones through retention.

Serve the result

Any static file server works for a quick look:

cd public && python3 -m http.server 9000

For production, use the nginx recipe — it handles clean URLs, the custom 404, archive downloads, and caching.

Last updated: 2026-06-22