Compilateur

Plugin SWC de gt-next écrit en Rust.

Compilateur

gt-next inclut un plug-in SWC écrit en Rust qui effectue une analyse à la compilation pour détecter les erreurs de traduction courantes et optimiser les performances.

Fonctionnalités

Détection de contenu dynamique

Détecte le contenu dynamique non encapsulé dans les composants de traduction :

// ❌ Non valide - contenu dynamique non encapsulé
<T>Hello {userName}</T>

// ✅ Valide - contenu dynamique encapsulé dans un composant de variable
<T>Hello <Var>{userName}</Var></T>

Validation des appels de fonction

Détecte les arguments non littéraux passés aux fonctions de traduction :

const t = useGT();

// ❌ Non valide - gabarits de chaîne et concaténation
t(`Hello ${name}`)
t("Hello " + name)

// ✅ Valide - chaînes littérales avec substitution de variables
t("Hello, {name}!", { name })

Génération de hachage à la compilation

Pré-calcul des hachages de traduction pour de meilleures performances à l’exécution :

// Entrée
<T>Hello world</T>

// Sortie (lorsqu’elle est activée)
<T _hash="a1b2c3d4">Hello world</T>

Configuration

Configurez le plugin SWC dans votre next.config.js :

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

export default withGTConfig(nextConfig, {
  locales: ['en', 'es'],
  swcPluginOptions: {
    logLevel: 'silent',     // Contrôle l'affichage des avertissements
    compileTimeHash: false, // Active la génération de hachages
  },
});

Options

  • logLevel: Contrôle le niveau d'affichage des avertissements

    • 'silent' - Aucun avertissement (valeur par défaut en production)
    • 'error' - Afficher comme erreurs de build
    • 'warn' - Afficher comme avertissements (valeur par défaut en développement)
    • 'info' - Afficher les messages d’information
    • 'debug' - Afficher toutes les informations de débogage
  • compileTimeHash: Active la génération de hachages à la compilation

    • false - Désactivé (par défaut)
    • true - Générer des hachages au moment du build pour de meilleures performances

Limitations

Le plugin SWC traite les fichiers individuellement et ne peut pas détecter les violations dans les composants réexportés :

// Fichier A : export { T as Translate } from 'gt-next'
// Fichier B : import { Translate } from './A'
<Translate>Hello {name}</Translate> // Ne sera pas détecté

Pour une couverture complète, y compris les réexportations, envisagez d’utiliser le plugin ESLint gt-next.

Comment trouvez-vous ce guide ?