Compilateur

Plugin SWC de gt-next, écrit en Rust.

Compilateur

gt-next inclut un plugin SWC écrit en Rust qui réalise 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 enveloppé dans les composants de traduction :

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

// ✅ Valide - contenu dynamique encapsulé dans un composant variable  
<T>Hello <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 template et concaténation
t(`Hello ${name}`)
t("Hello " + name)

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

Génération de hachages à la compilation

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

// Entrée
<T>Bonjour le monde</T>

// Sortie (quand activé)
<T _hash="a1b2c3d4">Bonjour le monde</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 la sortie des avertissements
    compileTimeHash: false, // Active 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 hachage au moment de la compilation

    • false - Désactivé (par défaut)
    • true - Générer des hachages à la compilation pour de meilleures performances

Limites

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>Bonjour {name}</Translate> // Ne sera pas détecté

Que pensez-vous de ce guide ?

Compilateur