Marketplace: veröffentlichen, installieren und ziehen
Bausteine über den Marketplace teilen: publish, install, add und governance – inklusive sync-official und dem --trust-Sicherheitsflow für Fremd-Code.
Was der Marketplace leistet
Über den Marketplace teilen Organisationen Bausteine: Ein Publisher exportiert ein Theme, einen Block, ein Layout oder ein ganzes Bundle aus dem eigenen CMS; ein Consumer installiert es in eine seiner Umgebungen. Zusätzlich gibt es offizielle Scorebase-Komponenten (Publisher-Org = keine, d.h. plattformweit).
Wichtig ist die Unterscheidung zwischen zwei Wegen, einen Baustein zu übernehmen:
| Befehl | Wirkt auf | Ergebnis |
|---|---|---|
hcms marketplace install |
CMS (Ziel-Environment) | Definition landet in der DB der Env – kein lokaler Code |
hcms marketplace add |
lokales Repo | .tsx-Komponente + cms/blocks-Definition + registry.tsx-Patch (optional --push) |
Veröffentlichen (publish)
# Einzelnen Block/Theme/Layout veröffentlichen
hcms marketplace publish --type block --slug hero --name "Hero" \
--version 1.0.0 --visibility public
# Alle Block-Dateien aus cms/blocks auf einmal
hcms marketplace publish --all --version 1.0.0 --visibility public
# Ganze aktuelle Umgebung als Bundle (Theme + Collections + Blocks + Layouts + Pages + Menüs + Formulare + Content)
hcms marketplace publish --type bundle --slug restaurant-starter --name "Restaurant" --version 1.0.0--typeistblock(Default),layout,themeoderbundle.--visibilityistunlisted(Default) oderpublic.--code(nurblock) sendet zusätzlich die Code-Sektion (Komponente + Block-Definition + transitivecomponent:-Helfer) aus der Projekt-registry.jsonmit – so kann fremder Code getragen werden.--officialruft nach dem Publish die Governance-AktionsetOfficial/setFeatured(nur mit Super-Admin-Org).
Es können nur eigene Ressourcen veröffentlicht werden; Payloads werden serverseitig bereinigt.
Installieren (install)
hcms marketplace install --type bundle --slug restaurant-starter --env dev
hcms marketplace install --type block --slug hero --env devinstall wendet die Definition idempotent an und löscht nie. Ein Bundle spielt das ganze Paket ein. Bei Blöcken landet nur die Definition in der Env – die React-Komponente ziehen Sie danach mit hcms marketplace add (siehe unten) oder Sie bauen sie selbst und tragen sie in die Registry ein.
Code ins Repo ziehen (add) und der --trust-Flow
hcms marketplace add zieht code-tragende Items mit .tsx-Code ins lokale Repo:
hcms marketplace add --list # code-tragende Items auflisten
hcms marketplace add --category hero --code-only # nur Hero-Items mit Code
hcms marketplace add cool-card # offiziellen Block ziehen
hcms marketplace add partner-hero --trust --push # Fremd-Block ziehen + in die Env pushenSicherheit – der --trust-Flow: Offizielle Scorebase-Items werden ohne Rückfrage gezogen. Fremd-Code (von einem anderen Publisher, nicht offiziell) wird nur mit --trust (bzw. interaktiver Bestätigung) übernommen; ohne TTY und ohne --trust bricht der Befehl ab. So kann kein fremder Code unbemerkt in Ihr Repo gelangen. npm-Abhängigkeiten fremder Items werden nur als Hinweis gemeldet (kein Auto-Install). Transitiv aufgelöste geteilte Helfer (component:-Deps) werden mitgezogen.
def-only-Items (ohne tragenden Code) brechen mit einem Hinweis auf hcms marketplace install ab.
Governance (Super-Admin)
Nur mit der Plattform-Super-Admin-Org:
hcms marketplace governance --action setFeatured --type block --marketplace-slug hero
hcms marketplace governance --action setOfficial --type theme --marketplace-slug base --value true
hcms marketplace governance --action takedown --type block --marketplace-slug spamsetOfficial, setFeatured und takedown steuern Sichtbarkeit und Auszeichnung. Ohne Super-Admin-Org: 403 FORBIDDEN.
Offizielle Komponenten synchronisieren (sync-official)
hcms marketplace sync-official sendet die offiziellen Scorebase-Komponenten (Blocks/Layouts/Themes) aus den gebündelten CLI-Templates an den Plattform-Release-Endpoint:
hcms marketplace sync-official --dry-run # nur lokal auflisten
hcms marketplace sync-official \
--url https://cms.scorebase.ch/headless \
--token $MARKETPLACE_RELEASE_TOKENDie Authentifizierung erfolgt mit dem MARKETPLACE_RELEASE_TOKEN (ein Plattform-Token, kein Org-Token, kein Env-Kontext). Items werden als offiziell (publisherOrgId = NULL) upgesertet; der Befehl meldet created/updated/unchanged. Blöcke tragen die Code-Sektion sowie category/tags mit.
Nach der Installation: die Komponente ergänzen
Ein installierter Block ist zunächst nur eine Definition. Führen Sie den bekannten Zwei-Schritt aus (wie für jeden eigenen Block):
npx hcms blocks pull
npx hcms types generate --scaffold-blocksDanach die gescaffoldete Komponente implementieren und in die Registry (components/blocks/registry.tsx) eintragen. Bis dahin rendert der Block über den generischen Fallback oder wird übersprungen – ein installierter Marketplace-Block bricht ein bestehendes Frontend nie. Themes brauchen keinen Code-Schritt: Nach dem Install liefert GET /theme einfach die neuen Tokens.