Deploy
Eine PreactPress-Site bauen und veröffentlichen
Deploy#
PreactPress erzeugt statische Dateien. Produktion bedeutet: Build ausführen und das Ausgabeverzeichnis, normalerweise dist/, auf einen Static Host hochladen.
In Produktion ist kein Node-Server nötig.
Lokal bauen und testen#
Führe Release-Checks und Produktionsbuild im Site-Verzeichnis aus:
pnpm run check
pnpm run build
Sieh dir den Build lokal an:
pnpm run preview
Der Preview-Server stellt den gebauten Output standardmäßig unter http://localhost:4173 bereit.
Produktionsmetadaten konfigurieren#
Setze site.url vor der Veröffentlichung. PreactPress nutzt diese URL für Canonical URLs, Open-Graph-Metadaten, sitemap.xml und robots.txt.
export default {
site: {
title: "Meine Site",
description: "Kurze Beschreibung für Suche und Social Previews",
url: "https://example.com",
base: "/",
},
build: {
sitemap: true,
robots: true,
},
};
Public Base Path#
Standardmäßig nimmt PreactPress an, dass deine Site am Domain-Root ausgeliefert wird:
https://example.com/
Wenn die Site unter einem Unterpfad liegt, setze site.base:
export default {
site: {
url: "https://user.github.io",
base: "/my-repo/",
},
};
Du kannst den Base Path auch nur für einen einzelnen Build überschreiben:
pnpm exec preactpress build --base /my-repo/
Build-Output#
Das Standard-Ausgabeverzeichnis ist dist/:
| Ausgabe | Beschreibung |
|---|---|
index.html, */index.html |
Statisches HTML für jede Route |
assets/* |
Gehashtes JavaScript und CSS von Vite |
404.html |
Fehlerseite |
preactpress-search.json |
Suchindex für das Standard-Theme |
preactpress-content/*.json |
Lazy geladene Markdown-Payloads für Client-Navigation |
sitemap.xml, robots.txt |
Erzeugt, wenn site.url und Build-Flags gesetzt sind |
feed.xml |
Erzeugt, wenn build.feed konfiguriert ist |
Deploye nur das Ausgabeverzeichnis. Deploye nicht node_modules, .preactpress oder den Build-Cache.
Plattform-Einstellungen#
Für die meisten Static Hosts reichen diese Einstellungen:
| Host | Build-Befehl | Output-Verzeichnis |
|---|---|---|
| Netlify | pnpm run build |
dist |
| Vercel | pnpm run build |
dist |
| Cloudflare Pages | pnpm run build |
dist |
| Render Static Site | pnpm run build |
dist |
Install-Befehl:
pnpm install
Node-Version: 20 oder höher.
GitHub Pages#
Für eine Projektseite unter https://user.github.io/my-repo/ konfigurierst du:
export default {
site: {
url: "https://user.github.io",
base: "/my-repo/",
},
};
Danach deployest du das Verzeichnis dist/.
Ein minimales GitHub-Actions-Workflow kann so aussehen:
name: Deploy PreactPress site to Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- uses: actions/configure-pages@v5
- run: pnpm install
- run: pnpm run check
- run: pnpm run build
- uses: actions/upload-pages-artifact@v3
with:
path: dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
Setze in den Repository-Einstellungen die Pages-Quelle auf GitHub Actions.
Monorepos#
In einem Monorepo führst du die Befehle aus dem Site-Paket aus:
cd packages/docs
pnpm run check
pnpm run build
Oder du übergibst der CLI den Site-Pfad:
pnpm exec preactpress build ./packages/docs
Cache-Headers#
Dateien unter assets/ enthalten Content-Hashes in ihren Dateinamen. Wenn dein Host HTTP-Header setzen kann, cache diese Dateien aggressiv:
Cache-Control: public, max-age=31536000, immutable
Wende immutable Caching nicht auf HTML-Dateien oder JSON-Payloads wie preactpress-search.json und preactpress-content/*.json an, weil diese URLs bei Inhaltsänderungen gleich bleiben können.