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

    intlayerMinify

    O intlayerMinify é um plugin do Vite que minifica arquivos JSON de dicionário compilados durante um build de produção. Ele remove todos os espaços em branco desnecessários e, quando combinado com o intlayerPrune, opcionalmente renomeia os nomes dos campos de conteúdo para apelidos (aliases) alfabéticos curtos (a, b, c, …) para reduzir ainda mais o tamanho do bundle.

    O plugin já está incluído e configurado automaticamente quando você usa o intlayer(). Você só precisa registrá-lo manualmente se estiver compondo a pilha de plugins por conta própria.

    Uso

    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayerMinify, intlayerPrune } from "vite-intlayer";
    import { createPruneContext } from "@intlayer/babel";
    
    const pruneContext = createPruneContext();
    
    export default defineConfig({
      plugins: [
        intlayerPrune(intlayerConfig, pruneContext),
        intlayerMinify(intlayerConfig, pruneContext),
      ],
    });
    

    Condições de ativação

    O intlayerMinify fica ativo apenas quando todas as três condições a seguir forem verdadeiras:

    1. O comando do Vite é build (não serve / dev).
    2. build.optimize é true (ou undefined, que assume o padrão true para builds).
    3. build.minify é true na sua configuração do Intlayer.

    Quando editor.enabled é true, o plugin continua sendo executado, mas pula a renomeação de campos: a renomeação reescreve as chaves de conteúdo percorridas pelo interpretador, então o keyPath recebido pelo editor visual não corresponderia mais aos dicionários não mesclados que ele edita. A compactação de espaços em branco e a remoção dos metadados de nível superior permanecem ativas.

    O que é minificado

    O plugin tem como alvo dois locais de dicionário (conforme resolvido a partir de intlayer.system):

    • dictionariesDir — dicionários estáticos de todos os idiomas (ex: .intlayer/dictionaries/*.json)
    • dynamicDictionariesDir — dicionários dinâmicos por idioma
    Os dicionários no modo fetch (fetchDictionariesDir) nunca são minificados porque são servidos a partir de uma API remota em tempo de execução usando seus nomes de campo originais. Renomear os campos criaria uma incompatibilidade entre a resposta do servidor e os acessos às propriedades no lado do cliente.

    Ofuscação de nomes de campos (minificação de propriedades)

    Quando o intlayerPrune analisa o código-fonte e preenche pruneContext.dictionaryKeyToFieldRenameMap, o intlayerMinify também renomeia os nomes dos campos de conteúdo para aliases curtos. Por exemplo:

    json
    // antes
    { "key": "myDict", "content": { "title": "Hello", "description": "World" } }
    
    // depois (com ofuscação)
    { "key": "myDict", "content": { "a": "Hello", "b": "World" } }
    

    Os acessos correspondentes às propriedades do arquivo fonte são renomeados pela passagem do Babel dentro do intlayerOptimize, de modo que o comportamento em tempo de execução permanece inalterado.

    Campos internos do Intlayer (nodeType, translation, etc.) nunca são renomeados.

    Dicionários de casos extremos (Edge-cases)

    Dicionários sinalizados em pruneContext.dictionariesWithEdgeCases (anomalias estruturais detectadas durante a fase de eliminação) são ignorados inteiramente — não são minificados nem ofuscados — para evitar o envio de dados corrompidos.

    Grupos qualificados (coleções / variantes / registros meta)

    Para dicionários com uma matriz qualifierTypes (coleções, variantes e registros meta), o plugin preserva a matriz qualifierTypes e o mapa lateral meta literalmente. Apenas as entradas de content têm seus nomes de campo ofuscados. As chaves compostas (usadas para correspondência de seletores em tempo de execução) nunca são tocadas.