Compilateur

Plug-in SWC de gt-next, basé sur Rust.

Compilateur

gt-next inclut un plugin SWC écrit en Rust qui effectue une analyse au moment de 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 enveloppé dans les composants de traduction :

// ❌ Invalide - contenu dynamique non encapsulé
<T>Bonjour {userName}</T>

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

Validation des appels de fonction

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

const t = useGT();

// ❌ Invalide - littéraux de gabarit et concaténation
t(`Hello ${name}`)
t("Hello " + name)

// ✅ Valide - littéraux de chaîne avec substitution de variable
t("Bonjour, {name} !", { name })

Génération de hachages à la compilation

Pré‑calcule les hachages de traduction pour de meilleures performances à l’exécution :

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

// Sortie (lorsque activé)
<T _hash="a1b2c3d4">Hello world</T>

Configuration

Configurez le plug-in SWC dans votre next.config.js :

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

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

Options

  • logLevel: Contrôle le niveau de sortie des avertissements

    • 'silent' - Aucun avertissement (valeur par défaut en production)
    • 'error' - Afficher comme erreurs de compilation
    • 'warn' - Afficher comme avertissements (valeur par défaut en développement)
    • 'info' - Afficher des 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 de la compilation pour de meilleures performances

Limitations

Le plugin SWC traite les files 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é

Comment trouvez-vous ce guide ?