Autor:
    Criação:2026-06-25Última atualização:2026-06-25

    intlayerCompiler

    O intlayerCompiler é um plugin do Vite que varre os arquivos de código-fonte dos componentes em busca de declarações de conteúdo embutidas do Intlayer — conteúdo definido diretamente dentro de um componente, em vez de em um arquivo .content.ts separado — e as grava em arquivos JSON de dicionário durante a fase de transformação.

    A partir do Intlayer v9, o intlayerCompiler é incluído automaticamente dentro do plugin principal intlayer() quando compiler.enabled é true e compiler.output está configurado nas suas configurações do Intlayer. Você só precisa registrá-lo separadamente quando desejar controle total sobre as configurações específicas do compilador.

    Uso

    Como parte do intlayer() (recomendado, v9+)

    Ative o compilador através das configurações do Intlayer:

    ts
    // intlayer.config.ts
    import { defineConfig } from "intlayer";
    
    export default defineConfig({
      compiler: {
        enabled: true,
        output: "./src/dictionaries", // onde os dicionários extraídos são gravados
      },
    });
    

    Em seguida, use o plugin padrão sem nenhum registro adicional:

    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayer } from "vite-intlayer";
    
    export default defineConfig({
      plugins: [intlayer()],
    });
    

    Standalone (quando necessário)

    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayerCompiler } from "vite-intlayer";
    
    export default defineConfig({
      plugins: [intlayerCompiler()],
    });
    

    Opções

    ts
    import type { IntlayerCompilerOptions } from "vite-intlayer";
    
    Opção Tipo Descrição
    configOptions GetConfigurationOptions Substituições de configuração do Intlayer encaminhadas para getConfiguration().
    compilerConfig Partial<CompilerConfig> Substituições para a seção de configuração específica do compilador (ex: enabled, output, filesList).

    Exemplo

    ts
    intlayerCompiler({
      configOptions: { configFile: "./config/intlayer.config.ts" },
      compilerConfig: { enabled: true, output: "./src/dictionaries" },
    });
    

    Como funciona

    Fase de transformação

    Para cada arquivo fonte que corresponda a compiler.filesList, o plugin do compilador:

    1. Passa o conteúdo do arquivo através de extractContent do @intlayer/babel.
    2. Chama onExtract para cada declaração encontrada, gravando o JSON do dicionário resultante em compiler.output.
    3. Retorna o código-fonte transformado com as declarações embutidas substituídas por chamadas padrão useIntlayer('key') / getIntlayer('key').

    Tipos de arquivos suportados: .ts, .tsx, .js, .jsx, .vue, .svelte, .astro.

    HMR (Hot Module Replacement)

    Quando um arquivo de componente é salvo no modo de desenvolvimento, o compilador:

    1. Detecta a alteração do arquivo por meio do gancho (hook) handleHotUpdate do Vite.
    2. Extrai novamente o conteúdo do arquivo atualizado.
    3. Grava o JSON do dicionário atualizado.
    4. Dispara uma atualização completa da página (server.ws.send({ type: 'full-reload' })).

    Um debounce de 500 ms impede que a gravação do dicionário em si (que também dispara um evento de alteração de arquivo) cause um loop infinito de extração.

    Eliminação de duplicatas (Deduplicação)

    O intlayerCompiler usa o mesmo mecanismo de deduplicação createPrimaryInstanceGuard que os outros plugins integrados. Quando tanto intlayer() (que empacota o compilador) quanto uma chamada manual ao intlayerCompiler() estão presentes, apenas a primeira instância registrada é executada — nenhum dicionário é gravado duas vezes.