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

    Pacote @intlayer/babel

    O pacote @intlayer/babel fornece um conjunto de plugins especializados do Babel para o Intlayer. Esses plugins cobrem todo o ciclo de build: extração de declarações de conteúdo, reescrita de chamadas useIntlayer / getIntlayer para importações de dicionário otimizadas, limpeza de campos não utilizados e minificação de nomes de campos.

    Instalação

    bash
    npm install @intlayer/babel
    

    Exportações

    Importar:

    ts
    import { ... } from "@intlayer/babel";
    

    Plugins

    Função / ClasseDescrição
    intlayerExtractBabelPluginPlugin do Babel que extrai conteúdo traduzível de arquivos-fonte e injeta ganchos (hooks) useIntlayer / getIntlayer automaticamente. Projetado para uso com o Next.js e ferramentas de compilação baseadas em Babel.
    intlayerOptimizeBabelPluginPlugin do Babel que transforma chamadas useIntlayer e getIntlayer e reescreve suas importações para importações de dicionário JSON otimizadas (estáticas, dinâmicas ou via fetch).
    intlayerPurgeBabelPluginPlugin do Babel que analisa arquivos-fonte e reescreve arquivos JSON de dicionário compilados para remover campos não utilizados (build.purge) ou renomeá-los para aliases curtos (build.minify).
    intlayerMinifyBabelPluginPlugin do Babel que reescreve arquivos-fonte para usar os aliases curtos de campo atribuídos durante a fase de minificação (por exemplo, content.titlecontent.a). Depende do intlayerPruneBabelPlugin.
    makeFieldRenameBabelPluginFunção factory que produz um plugin do Babel para renomear acessos a campos de conteúdo de dicionário em arquivos-fonte de acordo com o dictionaryKeyToFieldRenameMap preenchido no PruneContext.
    makeUsageAnalyzerBabelPluginFunção factory que produz um plugin do Babel para analisar o uso de useIntlayer / getIntlayer no código-fonte e agregar dados de uso de campo no PruneContext compartilhado.
    getSharedPruneContextFunção auxiliar que retorna o objeto PruneContext compartilhado para o diretório base especificado, ou null se ainda não tiver sido inicializado.

    Utilitários de Configuração de Plugins

    FunçãoDescrição
    getExtractPluginOptionsCarrega a configuração do Intlayer e retorna ExtractPluginOptions prontas para uso com o intlayerExtractBabelPlugin.
    getOptimizePluginOptionsCarrega a configuração do Intlayer e os dicionários compilados e retorna OptimizePluginOptions prontas para uso com o intlayerOptimizeBabelPlugin.
    getPurgePluginOptionsCarrega a configuração do Intlayer e retorna PurgePluginOptions prontas para uso com o intlayerPurgeBabelPlugin.
    getMinifyPluginOptionsCarrega a configuração do Intlayer e retorna MinifyPluginOptions prontas para uso com o intlayerMinifyBabelPlugin.

    Tipos

    TipoDescrição
    CompilerModeModo do compilador: 'dev' para desenvolvimento com suporte HMR, ou 'build' para compilações de produção.
    ExtractPluginOptionsOpções para o intlayerExtractBabelPlugin: lista de arquivos, configuração, callback onExtract, etc.
    ExtractResultResultado da extração: chave do dicionário, caminho do arquivo, conteúdo e idioma.
    OptimizePluginOptionsOpções para o intlayerOptimizeBabelPlugin: caminhos do dicionário, modo de importação, mapa de modos por dicionário, etc.
    PurgePluginOptionsOpções para o intlayerPurgeBabelPlugin: diretório base, sinalizadores de limpeza/minificação/otimização, lista de arquivos de componentes.
    MinifyPluginOptionsOpções para o intlayerMinifyBabelPlugin: diretório base, sinalizadores de minificação/otimização/editorEnabled.
    PruneContextEstado compartilhado entre plugins de análise e limpeza: mapas de uso de campo, mapas de renomeação, etc.
    DictionaryFieldUsageResultado do uso do campo para um único dicionário: Set<string> ou 'all' quando a análise estática é inconclusiva.
    NestedRenameEntryNó na árvore de renomeação: o shortName e o mapa de filhos.
    NestedRenameMapUm nível na árvore de renomeação: Map<string, NestedRenameEntry>.
    CompatCallerConfigConfiguração para um analisador de uso compatível para pacotes compat-adapter (nome do chamador e opções de processamento).
    ScriptBlockBloco de script extraído de um arquivo SFC (Vue ou Svelte): conteúdo, deslocamento de início e deslocamento de fim.

    Funções Utilitárias

    FunçãoDescrição
    generateShortFieldNameConverte um número inteiro (começando do zero) em um identificador alfabético curto: 0'a', 25'z', 26'aa', etc.
    buildNestedRenameMapFromContentConstrói recursivamente um NestedRenameMap a partir do valor do conteúdo de um dicionário compilado, respeitando as estruturas de nós do Intlayer (translation, enumeration, etc.).
    createPruneContextCria um novo objeto PruneContext vazio inicializado com valores padrão.
    extractScriptBlocksExtrai blocos <script> de arquivos SFC (Vue / Svelte) para análise subsequente do Babel.
    BABEL_PARSER_OPTIONSConstante que representa as opções do analisador do Babel que cobrem os frameworks suportados (React/Vue/Svelte/Angular/...).
    INTLAYER_CALLER_NAMESLista constante de nomes de chamadores originais do Intlayer: ['useIntlayer', 'getIntlayer'].

    Exemplo de Uso

    js
    // babel.config.js
    const {
      intlayerExtractBabelPlugin,
      intlayerPurgeBabelPlugin,
      intlayerMinifyBabelPlugin,
      intlayerOptimizeBabelPlugin,
      getExtractPluginOptions,
      getPurgePluginOptions,
      getMinifyPluginOptions,
      getOptimizePluginOptions,
    } = require("@intlayer/babel");
    
    module.exports = {
      presets: ["next/babel"],
      plugins: [
        [intlayerExtractBabelPlugin, getExtractPluginOptions()],
        [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
        [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
        [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
      ],
    };
    
    Nota: O plugin intlayerPurgeBabelPlugin deve ser declarado antes do intlayerMinifyBabelPlugin, porque o último lê o mapa de renomeação construído pelo primeiro. Além disso, ambos devem ser precedidos pelo intlayerOptimizeBabelPlugin para que ele possa ver as chaves do dicionário antes que as chamadas do useIntlayer sejam reescritas.