Local preview
Preview the guide, imported products, and theme changes.
Central content only
hugo server --themesDir ../
This does not fetch products and needs no product credentials.
Include product documentation
bash scripts/fetch-docs.sh
hugo server --themesDir ../ --config hugo.toml,_generated/imports.toml
The importer fetches the current remote default branch for every registered
product. It uses sparse checkouts under _sources/ and generates Hugo mounts
under _generated/. Both are ignored by Git.
Git uses HTTPS for imports. Configure your normal Git credential helper, or an SSH URL rewrite if you already use SSH access:
git config --global url."git@github.com:".insteadOf https://github.com/
That command changes your global Git configuration; use it only if you want GitHub HTTPS Git URLs to use SSH on your machine. Never place tokens in the product registry or repository URLs.
For a production-like local build:
hugo --themesDir ../ --config hugo.toml,_generated/imports.toml --minify
Without --themesDir ../, Hugo expects a separate theme checkout at
themes/kyanis-hugo-theme, matching CI.
Theme changes
Local preview uses the current sibling theme working tree, including
uncommitted changes. CI instead checks out the published commit in
theme-ref.txt. Publish theme changes through the theme repository’s normal
review process, then update that file to the new full commit SHA.
Troubleshooting
- Repository not found: verify the registry’s owner/name and your access. The import fails instead of silently omitting that product.
- Uncommitted changes in a fetched checkout: move your edits back to the product repository and resolve them before fetching again.
- Missing
_index.md: add a section index to the affected language root. - MDX unsupported: use Markdown and Hugo shortcodes.
- Theme not found: check the sibling folder name and
--themesDir. - Module download error: check Go, network access, and
go.sum. - Missing translation: confirm that the translated file actually exists with the same relative path in the other language.
Failed imports do not replace the last generated mount configuration. Do not ignore the command’s exit status and then build stale generated input.