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