Compiler

Rust-basiertes SWC-Plugin von gt-next.

Compiler

gt-next enthält ein Rust-basiertes SWC-Plugin, das zur Build-Zeit Analysen durchführt, um gängige Übersetzungsfehler frühzeitig zu erkennen und die Leistung zu optimieren.

Funktionen

Erkennung dynamischer Inhalte

Erkennt nicht eingeschlossene dynamische Inhalte in Übersetzungskomponenten:

// ❌ Ungültig - dynamischer Inhalt nicht umschlossen
<T>Hallo {userName}</T>

// ✅ Gültig - dynamischer Inhalt in Var-Komponente umschlossen  
<T>Hallo <Var>{userName}</Var></T>

Validierung von Funktionsaufrufen

Erkennt nicht-literal übergebene Argumente an Übersetzungsfunktionen:

const t = useGT();

// ❌ Ungültig - Template-Literale und Verkettung
t(`Hello ${name}`)
t("Hello " + name)

// ✅ Gültig - String-Literale mit Variablenersetzung
t("Hello, {name}!", { name })

Hash-Generierung zur Kompilierzeit

Berechnet Übersetzungs-Hashes vorab für bessere Laufzeit-Performance:

// Eingabe
<T>Hallo Welt</T>

// Ausgabe (wenn aktiviert)
<T _hash="a1b2c3d4">Hallo Welt</T>

Konfiguration

Konfigurieren Sie das SWC-Plugin in Ihrer next.config.js:

import { withGTConfig } from 'gt-next/config';

export default withGTConfig(nextConfig, {
  locales: ['en', 'es'],
  swcPluginOptions: {
    logLevel: 'silent',     // Warnungsausgabe kontrollieren
    compileTimeHash: false, // Hash-Generierung aktivieren
  },
});

Optionen

  • logLevel: Steuert die Ausgabeebene für Warnungen

    • 'silent' - Keine Warnungen (Standard in Produktion)
    • 'error' - Als Build-Fehler anzeigen
    • 'warn' - Als Warnungen anzeigen (Standard in Entwicklung)
    • 'info' - Info-Meldungen anzeigen
    • 'debug' - Alle Debug-Informationen anzeigen
  • compileTimeHash: Aktiviert die Generierung eines Hashes zur Compile-Zeit

    • false - Deaktiviert (Standard)
    • true - Hashes zur Build-Zeit generieren für bessere Performance

Einschränkungen

Das SWC-Plugin verarbeitet Dateien einzeln und kann Verstöße in erneut exportierten Komponenten nicht erkennen:

// Datei A: export { T as Translate } from 'gt-next'
// Datei B: import { Translate } from './A'
<Translate>Hallo {name}</Translate> // Wird nicht erkannt

Wie ist dieser Leitfaden?

Compiler