Publishing has two steps: export the site to static files, then upload that folder to any host.
1. Verify before publishing
jprot lintReports missing frontmatter, broken internal links, missing descriptions, images without alt text, and oversized local images. Fix what it lists, then preview production behavior:
jprot --prod --no-watchProduction mode hides drafts and sends immutable cache headers. Stop with
Ctrl+C when done.
2. Export
jprot export --out distExported site to: .../distdist/ contains everything the site needs: index.html, one folder per page,
404.html, RSS feed, sitemap, search index, PWA manifest, link-preview images,
and your public/ files minus drafts. Never edit files inside dist/ —
change content/ and re-export.
Project-site deployments (--base-path)
For https://ACCOUNT.github.io/REPOSITORY/ (a project site), prefix exported
URLs:
jprot export --out dist --base-path /REPOSITORYOr set it once in jprot.config.js:
export default {
basePath: '/REPOSITORY',
}basePath is folded into every generated link:
manifest.jsonstart_url,scope, and icon paths are prefixed.- Sitemap, RSS,
robots.txt,llms.txt, canonical, and OG URLs usesite.url + basePathautomatically — so the exported output is deployment-correct without editingurlby hand. .nojekyllis written for GitHub Pages.
A user site (https://ACCOUNT.github.io/) needs no --base-path.
Sanity-check before pushing:
test -f dist/index.html
test -f dist/404.html
find dist -name index.html | sort3. Deploy
GitHub Pages
Enable GitHub Pages in the repository settings and point it at the dist/
branch or folder.
Netlify / Cloudflare Pages / Vercel
Upload dist/ as-is, or connect the repository with:
- Build command:
jprot export - Output directory:
dist/ - Not-found page:
404.html
Any static host
Remove the dist/ directory and ensure the host serves 404.html for unknown
addresses. If the host doesn't support clean URLs (/about/index.html), enable
them, or use the folder URLs as exported.
Running as a server (Node hosting)
npm install
npm start -- --prod --no-watchPublic hosts usually need a host and port:
HOST=0.0.0.0 PORT=8080 npm start -- --prod --no-watchBefore going live
Set the real url in jprot.config.js. basePath fixes file addresses;
url controls search-engine and link-preview metadata. Both are needed for a
project site.
Next: Catalog elements.