Was passiert bei npm run build? Die Next.js-Pipeline
Wenn ein Entwickler den Build als grün meldet, klingt das nach einer einzigen Aktion. Tatsächlich ist es eine Kette von einem halben Dutzend nacheinander laufender Schritte, von denen jeder einzelne den Build stoppen kann — und das ist gut so, weil genau diese Kette der zweite Schutzwall hinter den Pre-Commit-Hooks ist. Wer wissen will, was er kauft, wenn er eine gebaute Kanzlei-Website beauftragt, sollte verstehen, was hinter dem grünen Häkchen passiert. Dieser Artikel führt Schritt für Schritt durch die Pipeline einer Next.js-Kanzlei-Site, an konkreten Beispielen aus dem fahoch2.de-Repo — von der Typprüfung bis zum statisch generierten HTML.
Was Sie aus diesem Artikel mitnehmen
- Welche Schritte beim Build einer Next.js-Site nacheinander laufen
- An welcher Stelle der Build was prüft — und warum jede Stufe für die Site-Qualität wichtig ist
- Warum statisches Rendering der Sicherheits-Hebel für Kanzlei-Websites ist
- Was im Fehler-Fall passiert und warum das die Site stark macht, nicht fragil
Würdigung — die „Magic" hinter dem grünen Häkchen
In der klassischen WordPress-Welt gibt es keinen Build im engeren Sinn: PHP läuft live auf dem Server, die Seite wird bei jeder Anfrage neu zusammengebaut. Das funktioniert, hat aber den Preis, dass Tippfehler im PHP-Code oder ein neues Plugin-Update erst auf der Live-Site auffallen können. Eine moderne Site geht den umgekehrten Weg: Sie wird vorher gebaut, in einem definierten Schritt, und nur das fertige Ergebnis (statisches HTML, optimierte Assets) landet auf dem Server. Der Build ist damit der zentrale Qualitäts-Gate vor der Veröffentlichung.
Das macht die Site nicht magisch — es macht sie überprüfbar. Wenn der Build grün ist, ist eine ganze Reihe von Eigenschaften nachweisbar erfüllt; wenn er rot ist, ist klar, an welcher Stufe was schiefging.
Hinweis:
Wenn Sie sich nicht sicher sind, ob die Build-Pipeline Ihrer aktuellen Site die heute üblichen Schritte enthält, ordnet unser kostenfreier URL-Audit den Stack (statisch vs. live-gerendert) ein, und ein Erstgespräch (30 Minuten, kostenfrei) übersetzt das in eine konkrete Bewertung.
Schritt 1: TypeScript-Typprüfung
Sobald der Build startet (npm run build ruft bei Next.js intern next build auf), läuft als allererstes der TypeScript-Compiler über das gesamte Projekt — bei uns mit strikter Einstellung. Was er prüft: Sind alle Typen konsistent? Ruft eine Komponente eine andere mit den richtigen Argumenten auf? Existiert das Feld description, das eine Funktion gerade liest? Verweist ein Insight-Cluster auf einen Slug, den es gar nicht gibt?
Diese Prüfung fängt eine sehr typische Klasse von Fehlern: Refactorings, die irgendwo unvollständig blieben. „Ich habe ein Feld umbenannt, aber an drei Stellen vergessen" — TypeScript zeigt diese drei Stellen mit Datei und Zeile an, bevor der Build überhaupt weitermacht. Details zum konkreten Mehrwert für Kanzlei-Sites: TypeScript-Insight.
Schritt 2: ESLint (Code-Standards + Barrierefreiheit)
Wenn die Typen stimmen, läuft ESLint mit den konfigurierten Regeln — bei uns der Default-Satz für Next.js + TypeScript, ergänzt um ein spezialisiertes Barrierefreiheits-Plugin (jsx-a11y). Dieses Plugin prüft schon beim Build automatisch, ob die Seite die anerkannten Barrierefreiheits-Regeln einhält — damit sie auch für Menschen nutzbar bleibt, die auf Screenreader oder reine Tastatur-Navigation angewiesen sind. ESLint fängt:
- Code-Geruch: tote Variablen, unbenutzte Importe, problematische Sprach-Konstrukte (z. B.
==statt===). - React-spezifische Probleme: falsch verwendete Hooks, fehlende Schlüssel in Listen, gefährliche Render-Muster.
- Barrierefreiheits-Verstöße:
<img>ohnealt,<button>ohne erkennbaren Text, Eingabefelder ohne Label.
Im Pre-Commit-Hook läuft ESLint nur auf den gestageten Dateien (Tempo); im Build läuft es über das ganze Projekt (Vollständigkeit) — eine sinnvolle Aufteilung.
Schritt 3: Bundle (Next.js Compiler)
Jetzt erst entsteht der eigentliche Code, der später ausgeliefert wird. Next.js verarbeitet alle TypeScript-Dateien zu ausführbarem JavaScript, sammelt zugehöriges CSS (bei uns Tailwind), löst Importe auf, optimiert das Ergebnis (entfernt toten Code, minimiert) und teilt den Output in passende Pakete pro Route. Das Ziel: Pro Seite ein möglichst kleines, gezielt geladenes Bundle.
Für eine Kanzlei-Site ist dieser Schritt vor allem für die Core Web Vitals wichtig: Je kleiner das pro Seite geladene JavaScript, desto schneller die Anzeige beim Besucher.
Schritt 4: Statisches Rendering (SSG)
Dies ist der Schritt, der eine moderne Kanzlei-Site fundamental von einer WordPress-Site unterscheidet. Next.js rendert jede Route, die keine Live-Daten braucht, schon zur Build-Zeit zu fertigem HTML. Bei uns betrifft das praktisch alle Seiten: Startseite, jede Stadt-Landingpage, jeder Insight-Artikel, jede Rubrik. Das Ergebnis sind statische HTML-Dateien, die später vom CDN ausgeliefert werden — ohne Datenbank, ohne PHP, ohne Live-Logik.
Konsequenzen für Kanzlei-Sites:
- Tempo: Statisches HTML erscheint in Millisekunden im Browser, weil kein Server-seitiges Rendering wartet.
- Sicherheit: Was keine laufende Datenbank und keine laufende Anwendung hat, lässt sich auch nicht über klassische CMS-Angriffe übernehmen — der häufigste Angriffsvektor entfällt strukturell. Tiefer: Statisches Rendering vs. WordPress.
- Verlässlichkeit: Was beim Build geprüft wurde, ist auch das, was live ist — keine Inkonsistenz zwischen „lokal grün, live rot".
Schritt 5: Sitemap + OG-Image-Generierung
Während dieser Stufe entstehen auch automatische Begleit-Dateien: die XML-Sitemap (die wir programmatisch aus den vorhandenen Routen erzeugen), die robots.txt, die Open-Graph-Bilder für Social-Sharing (bei uns über die Edge-Funktion opengraph-image.tsx jeweils pro Insight individuell generiert).
Das ist nicht trivial: Eine Sitemap, die manuell gepflegt werden muss, läuft fast garantiert aus dem Takt. Eine Sitemap, die beim Build aus den realen Routen entsteht, kann das nicht — sie ist per Konstruktion aktuell.
Schritt 6: Asset-Optimierung
Schließlich werden die Assets, die mit der Site ausgeliefert werden, optimiert: Bilder in modernen Formaten (WebP, AVIF, beschrieben im Bild-Optimierungs-Insight), Schriften (self-hosted und mit font-display: swap, beschrieben im Fonts-Insight), CSS und JavaScript komprimiert. Das Ergebnis-Verzeichnis (/.next/ bei uns) enthält am Ende alle Dateien, die später vom CDN ausgeliefert werden.
Was im Fehler-Fall passiert
Hier wird die Pipeline wirklich nützlich. Wenn irgendeine Stufe scheitert — ein Typfehler, ein ESLint-Verstoß, ein Render-Problem bei einer statischen Seite —, bricht der Build ab. Konkrete Konsequenzen:
- Lokal: Der Entwickler sieht den Fehler sofort und kann ihn beheben.
- Im Vercel-Deploy (siehe Vercel-Deploy-Insight): Wenn der Build der neuen Version scheitert, wird die Live-Site NICHT überschrieben. Sie läuft mit der vorherigen, funktionierenden Version weiter. Das ist die fundamentale Sicherheit einer modernen Deployment-Pipeline: Eine kaputte Änderung wird nicht aktiv, eine funktionierende bleibt.
Das ist der eigentliche Grund, warum „Build muss grün sein" so eine Mantra-Position hat: Es ist die Stelle, an der Probleme noch repariert werden, bevor sie Besucher sehen.
Was Kanzleien davon haben
Drei Vorteile, die sich aus der Pipeline selbst ergeben:
- Die Site geht nicht in Wartung, weil ein Plugin-Update schiefgegangen ist — dieser Fehler-Modus existiert in der statischen Welt strukturell nicht.
- Inhaltliche Inkonsistenzen werden früh sichtbar: Wenn die Sitemap aus realen Routen kommt und der Cluster-Linter Slug-Konsistenz erzwingt, fallen tote Verweise beim Build auf, nicht erst beim Besucher.
- Audit-Tauglichkeit: Eine Site, deren Build-Pipeline einen klaren Soll-Stand definiert (alle Routen erfolgreich gerendert, keine TypeScript-Fehler, keine A11y-Verstöße aus jsx-a11y, alle Assets optimiert), ist auch im Audit klar bewertbar — der Auditor kann fragen „läuft der Build aktuell grün?", und das ist eine objektiv beantwortbare Frage.
Beispiel:
Eine Insights-Erweiterung, bei der ein Slug nicht ins Cluster-Mapping eingetragen war, hat im Build erst auffallen können — der Pre-Commit-Hook fängt das jetzt, aber der Build wäre der zweite Schutzwall gewesen (Cluster-Coverage-Check als eigenes Linter-Skript). Bei einer Vercel-Deploy-Konstellation hätte die kaputte Version den Live-Stand nicht überschrieben — und der Auditor hätte gesehen, dass die alte Version weiterläuft. Wer ähnlich denkt für die eigene Site: ein Erstgespräch (30 Minuten, kostenfrei) ordnet die Stufen Ihrer aktuellen Pipeline ein.
Wie wir es bauen
Bei jedem neuen Projekt richten wir die Pipeline so ein, dass alle sechs Schritte aktiv sind — und prüfen, dass der Build lokal und in der Cloud (Vercel) identisch grün läuft, bevor irgendetwas live geht. Wir ergänzen eigene Linter-Schritte (Cluster-Coverage, DSE-Konsistenz), wo das Risiko es rechtfertigt, und behalten die Build-Zeit unter zwei Minuten — schneller als das schließt die Lücke „der Build ist mir zu langsam, ich überspringe ihn manchmal".
Für eine strukturierte Bewertung der Build-Pipeline einer bestehenden Kanzlei-Site empfehlen wir den Hebel-Audit (890 €, bei Mandanten-Boost-Beauftragung innerhalb von 60 Tagen voll anrechenbar).
Zusammenfassung
npm run build ist nicht eine einzelne Aktion, sondern eine Kette von etwa sechs nacheinander laufenden Schritten: TypeScript-Typprüfung, ESLint inkl. Barrierefreiheits-Plugin, Bundle-Erzeugung durch den Next.js-Compiler, statisches Rendering aller Seiten zu HTML, Sitemap- und OG-Image-Generierung, Asset-Optimierung. Jeder Schritt kann den Build stoppen — und das ist der eigentliche Mehrwert: Fehler werden vor der Veröffentlichung sichtbar, eine kaputte Änderung überschreibt nie eine funktionierende Live-Site, und der Soll-Stand der Pipeline ist objektiv prüfbar. Für Kanzlei-Sites ergibt sich daraus eine fundamental andere Sicherheits- und Verlässlichkeits-Lage als bei klassischen, live gerenderten CMS-Sites — die häufigsten Angriffs- und Ausfall-Wege existieren strukturell nicht.
Quellen
- Next.js —
next buildCLI Reference — abgerufen 2026-06-05 - Next.js — Static Site Generation (SSG) — abgerufen 2026-06-05
- Vercel — Build Step Documentation — abgerufen 2026-06-05
- eslint-plugin-jsx-a11y — Repository — abgerufen 2026-06-05
Disclaimer: Beschreibung der tatsächlichen Build-Pipeline von fahoch2.de (Next.js 16, App Router, statisch gerendert) zum Zeitpunkt der Veröffentlichung. Konkrete Pipeline-Schritte sind framework-abhängig; das Prinzip „vor der Veröffentlichung prüfen, im Fehler-Fall die Live-Site schützen" bleibt gleich.
Stand und rechtlicher Hinweis
- Erstveröffentlichung
- Autor
- Alexander Mock
- Lesezeit
- 8 Minuten
Allgemeine Information, keine individuelle Beratung. Dieser Artikel beschreibt steuer-, berufs- oder webrechtliche Grundsystematik zum oben genannten Stand. Er ist nicht mandantenspezifisch und ersetzt keine individuelle Rechts-, Steuer- oder Anlage-Beratung im Sinne § 2 Rechtsdienstleistungsgesetz (RDG), § 1 Steuerberatungsgesetz (StBerG) oder § 34d/f Gewerbeordnung (GewO). Vor jeder konkreten Entscheidung wenden Sie sich an einen zugelassenen Steuerberater, Rechtsanwalt oder die jeweils zuständige Behörde.
Zitate aus amtlichen Werken. Gesetzes-Texte, Verwaltungsanweisungen (BMF-Schreiben) und Gerichts-Entscheidungen (BFH, BGH, BVerfG, EuGH) sind nach § 5 Urheberrechtsgesetz gemeinfrei. Zitiert wird jeweils mit Aktenzeichen und Entscheidungs- bzw. Schreibens-Datum. Aktualität der Rechtslage bitte vor Bezugnahme gegen die jeweilige amtliche Veröffentlichung prüfen (gesetze-im-internet.de, bundesfinanzhof.de, bmf.bund.de).
Externe Quellen. Wo wir auf Studien, Branchenstatistiken oder Drittanbieter-Dokumente verweisen, ist das Abrufs-Datum jeweils beim Quellenverweis angegeben. Online-Inhalte können sich nach unserem Abruf geändert haben.
Haftung. Trotz sorgfältiger Recherche können Ungenauigkeiten oder Rechtsänderungen nach Veröffentlichung nicht ausgeschlossen werden. Eine Haftung für Schäden, die durch die Nutzung der Information ohne anwaltliche oder steuerberaterliche Gegenprüfung entstehen, ist ausgeschlossen — soweit gesetzlich zulässig.
Themen
Auch zu lesen
Code & Architektur
Pillar-Pages: Hub-and-Spoke-SEO im echten Kanzlei-Repo
Viele Kanzlei-Websites sammeln über die Jahre Fachbeiträge an, die einzeln für sich stehen — eine lose Liste von Artikeln, die weder die Besucher führt noch von Google als zusammenhängende Kompetenz gelesen wird. Die Hub-and-Spoke-Architektur dreht das um: Eine zentrale, eigenständig argumentierende Übersichtsseite (der Hub) erzählt ein Thema als Ganzes und verzweigt gezielt in vertiefende Einzelartikel (die Spokes). Das ist mehr als eine SEO-Technik — es ist eine Frage der Bauweise. Dieser Artikel zeigt, wie diese Architektur im fahoch2.de-Repo konkret lebt: welche TypeScript-Typen Hub und Spokes zusammenhalten, wie die Lesbarkeit auf dem Mobilgerät gesichert wird, und warum ein Pre-Commit-Linter die schleichende Drift zwischen Übersicht und Detail mechanisch verhindert.
Code & Architektur
Edge-Funktionen und Server Actions — ohne PHP-Server
Sobald eine Website ein Kontaktformular hat, braucht sie irgendwo Code, der die Eingabe entgegennimmt, prüft und weiterleitet — in der klassischen Welt ist das PHP auf einem Webserver, oft mit Datenbank dahinter. In der modernen, statisch gerenderten Welt entfällt der Webserver fast vollständig; übrig bleiben kleine, präzise abgegrenzte Funktionen, die bei Bedarf ausgeführt werden: Edge-Funktionen und Server Actions. Diese Architektur ist nicht nur eleganter, sondern hat für Kanzlei-Websites einen konkreten Sicherheits-Mehrwert: Die größten klassischen Angriffsklassen existieren strukturell nicht. Dieser Artikel erklärt, wie das Kontaktformular auf fahoch2.de gebaut ist, was Edge-Funktionen und Server Actions konkret tun — und wie wir Honeypot und Rate-Limiting ohne CAPTCHA absichern.
Code & Architektur
Tour durch das Repo einer modernen Kanzlei-Website
Eine gebaute Kanzlei-Website ist kein einzelnes WordPress-Theme im Verzeichnis wp-content/themes — sie ist ein strukturiertes Repository, in dem jedes Verzeichnis eine bestimmte Aufgabe hat. Diese Trennung ist nicht nur Geschmacksache: Sie entscheidet, wie schnell ein Inhalts-Update möglich ist, wie wartbar die Site nach drei Jahren bleibt und wie wenig Reibung beim Übergeben an einen anderen Entwickler entsteht. Dieser Artikel ist eine Tour durch das echte fahoch2.de-Repository — was in welchem Ordner lebt, warum die Trennung so geschnitten ist, und worauf bei einer Kanzlei-Website besonders zu achten ist.
Wenn Sie das in Ruhe besprechen möchten
Lassen Sie uns 30 Minuten zur Außen-Sicht Ihrer Kanzlei sprechen.
Erst gratis-Vorprüfung über das URL-Tool — dann entscheiden Sie, ob ein 890-€-Tiefen-Audit für Sie Sinn ergibt.