Erscheinungsbild
Feature Flags
Flags schalten auf Build-Ebene. Weil die Ausgabe statisch ist, landet eine nicht gerenderte Komponente gar nicht erst im Ergebnis — ein deaktiviertes Feature kostet keine Bytes.
Verbotene Kombinationen
Diese Kombinationen brechen den Build ab. Jede steht für einen Zustand, der sonst erst im Betrieb auffallen würde — im ungünstigsten Fall als Datenschutzproblem.
| Kombination | Grund |
|---|---|
deployment.target: 'github-pages' + forms.provider: 'standalone-php' | GitHub Pages führt kein PHP aus |
tracking.enabled: true + features.cookieConsent: false | Tracking ohne Consent-Schicht |
tracking.ga4 oder googleAds + tracking.enabled: false | widersprüchlich |
tracking.enabled: true ohne containerId | GTM ohne Container |
consent.categories ohne necessary | notwendige Kategorie fehlt |
tracking.ga4: true ohne Kategorie analytics | Tag ohne zugehörige Einwilligung |
tracking.googleAds: true ohne Kategorie marketing | Tag ohne zugehörige Einwilligung |
Formular-Provider ohne endpoint | Formular ohne Ziel |
joomla mit relativem Endpunkt | Backend-URL muss absolut sein |
standalone-php mit fremder Domain | muss same-origin sein |
seo.schemas.localBusiness ohne company.address | unbrauchbares JSON-LD |
features.webMcp: true ohne Objekt webMcp | experimentelles Feature ohne Bestätigung |
features.vue: true ohne installiertes @astrojs/vue | Insel ohne Framework |
Zusätzlich gelten in production die umgebungsabhängigen Regeln aus Environment.
Warum kein Flag ungetestet bleibt
Ein Flag, das niemand einschaltet, verrottet unbemerkt. Der Starter baut deshalb bei jedem pnpm verify zwei vollständige Konfigurationen:
| Fixture | Zustand |
|---|---|
tests/fixtures/configs/minimal | alle optionalen Funktionen aus |
tests/fixtures/configs/full | alle optionalen Funktionen an |
Eine dritte Fixture, invalid, enthält eine verbotene Kombination. Ein Integrationstest startet damit einen echten Build und prüft, dass er abbricht und die Ursache nennt.
Regel für neue Flags
Ein neues Flag ist erst fertig, wenn beide Zustände in den Fixtures vorkommen und, sofern es mit anderen Optionen interagiert, eine Kombinationsregel samt Unit-Test existiert.
Eine Ausnahme ist features.vue: Da @astrojs/vue im Starter bewusst nicht vorinstalliert ist, lässt sich der aktive Zustand nicht als Build prüfen. Die Regel wird stattdessen im Unit-Test mit einem eingeschleusten Resolver abgedeckt.
Hintergrund in ADR 0002.