Compilador

El plugin de SWC de gt-next basado en Rust.

Compilador

gt-next incluye un complemento de SWC basado en Rust que realiza análisis en tiempo de compilación para detectar errores de traducción comunes y optimizar el rendimiento.

Funcionalidades

Detección de contenido dinámico

Detecta contenido dinámico no envuelto en componentes de traducción:

// ❌ Inválido - contenido dinámico no envuelto
<T>Hello {userName}</T>

// ✅ Válido - contenido dinámico envuelto en componente variable  
<T>Hello <Var>{userName}</Var></T>

Validación de llamadas a funciones

Detecta argumentos no literales pasados a funciones de traducción:

const t = useGT();

// ❌ Inválido - literales de plantilla y concatenación
t(`Hello ${name}`)
t("Hello " + 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 los 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',     // Controla la salida de advertencias
    compileTimeHash: false, // Habilita la generación de hash
  },
});

Opciones

  • logLevel: Controla el nivel de salida de advertencias

    • 'silent' - Sin advertencias (valor predeterminado para producción)
    • 'error' - Mostrar como errores de compilación
    • 'warn' - Mostrar como advertencias (valor predeterminado para 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ón

    • false - Desactivado (valor predeterminado)
    • true - Generar hashes en tiempo de compilación para un mejor rendimiento

Limitaciones

El complemento de SWC procesa los archivos de forma individual y no puede detectar incumplimientos en componentes reexportados:

// Archivo A: export { T as Translate } from 'gt-next'
// Archivo B: import { Translate } from './A'
<Translate>Hola {name}</Translate> // No será detectado

¿Qué te ha parecido esta guía?

Compilador