Compilador
Complemento de SWC de gt-next basado en Rust.
Compilador
gt-next incluye un plugin de SWC escrito en Rust que realiza análisis en tiempo de compilación para detectar errores de traducción comunes y optimizar el rendimiento.
Funciones
Detección de contenido dinámico
Detecta contenido dinámico no envuelto en componentes de traducción:
// ❌ No válido: contenido dinámico sin encapsular
<T>Hola {userName}</T>
// ✅ Válido: contenido dinámico encapsulado en el componente <Var>
<T>Hola <Var>{userName}</Var></T>Validación de llamadas a funciones
Detecta argumentos no literales que se pasan a las funciones de traducción:
const t = useGT();
// ❌ No válido: literales de plantilla y concatenación
t(`Hola ${name}`)
t("Hola " + name)
// ✅ Válido: literales de cadena con sustitución de variables
t("¡Hola, {name}!", { name })Generación de hash en tiempo de compilación
Precalcula hashes de traducción para mejorar el rendimiento en tiempo de ejecución:
// Entrada
<T>Hola, mundo</T>
// Salida (cuando está habilitado)
<T _hash="a1b2c3d4">Hola, mundo</T>Configuración
Configura el complemento de SWC en tu next.config.js:
import { withGTConfig } from 'gt-next/config';
export default withGTConfig(nextConfig, {
locales: ['en', 'es'],
swcPluginOptions: {
logLevel: 'silent', // Controlar salida de advertencias
compileTimeHash: false, // Activar generación de hash
},
});Options
-
logLevel: Controla el nivel de salida de advertencias'silent'- Sin advertencias (valor predeterminado en producción)'error'- Mostrar como errores de compilación'warn'- Mostrar como advertencias (valor predeterminado en desarrollo)'info'- Mostrar mensajes informativos'debug'- Mostrar toda la información de depuración
-
compileTimeHash: Habilita la generación de hashes en tiempo de compilaciónfalse- Deshabilitado (valor predeterminado)true- Genera hashes en tiempo de compilación para mejorar el rendimiento
Limitaciones
El plugin de SWC procesa los files de forma individual y no puede detectar infracciones en componentes reexportados:
// Archivo A: export { T as Translate } from 'gt-next'
// Archivo B: import { Translate } from './A'
<Translate>Hello {name}</Translate> // No se detectará¿Qué te parece esta guía?