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 compilationfalse- 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 ?