Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Este documento está desatualizado, a versão base foi atualizada em 25 de junho de 2026.
Ir para a documentação em inglêsHistórico de versões
- "Doc inicial"v8.0.021/01/2026
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Documentação do plugin intlayerPrune para Vite
O plugin Vite intlayerPrune é usado para realizar tree-shaking e podar dicionários não utilizados do bundle da sua aplicação. Isso ajuda a reduzir o tamanho final do bundle incluindo apenas o conteúdo multilíngue necessário.
Utilização
Como parte de intlayer() (recomendado)
Ative a poda através da sua configuração Intlayer e o plugin principal trata de tudo:
Copiar o código para a área de transferência
// intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({ build: { optimize: true, // ativa poda e minificação },});Copiar o código para a área de transferência
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Standalone
Se você está compondo a pilha de plugins manualmente, intlayerPrune e intlayerMinify compartilham um objeto PruneContext que deve ser criado uma vez e passado para ambos:
Copiar o código para a área de transferência
// vite.config.tsimport { defineConfig } from "vite";import { intlayerPrune, intlayerMinify } from "vite-intlayer";import { createPruneContext } from "@intlayer/babel";import { getConfiguration } from "@intlayer/config/node";const intlayerConfig = getConfiguration();const pruneContext = createPruneContext();export default defineConfig({ plugins: [ intlayerPrune(intlayerConfig, pruneContext), intlayerMinify(intlayerConfig, pruneContext), // opcional, lê do mesmo contexto ],});Como funciona
1. Análise de uso (buildStart)
Durante buildStart, o plugin intlayerOptimize (também parte de intlayer()) verifica cada arquivo de código-fonte de componente listado em build.filesList. Para cada chamada useIntlayer('key') ou getIntlayer('key'), ele registra exatamente quais campos são acessados, por exemplo:
Copiar o código para a área de transferência
const { title, description } = useIntlayer("myDict");// registra: myDict → { title, description }Isso constrói pruneContext.fieldUsageMap antes de qualquer chamada transform ser executada.
2. JSON pruning (transform, enforce: 'pre')
When Vite processes a compiled dictionary JSON file, intlayerPrune intercepts it before Vite's built-in JSON → ESM conversion. It reads the field-usage map from pruneContext and removes any content field that is not in the recorded usage set.
Two content shapes are supported:
- Static dictionaries —
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Fields are pruned per-locale insidetranslation. - Dynamic (per-locale) dictionaries — flat
{ fieldA: ..., fieldB: ... }. Fields are pruned at the top level.
3. Casos extremos
Se a estrutura de conteúdo de um dicionário não puder ser reconhecida (por exemplo, uma forma aninhada incomum), ele será adicionado a pruneContext.dictionariesWithEdgeCases e deixado intocado. Um aviso é registrado. intlayerMinify também ignora esses dicionários.
4. Mapa de renomeação de campos
Quando a limpeza tem sucesso, intlayerPrune também escreve pruneContext.dictionaryKeyToFieldRenameMap — um mapeamento de nomes de campos originais para aliases curtos. intlayerMinify lê este mapa para renomear campos no JSON de saída, e a passagem de renomeação Babel de intlayerOptimize atualiza os acessos de propriedades nos arquivos fonte de acordo.
Condições de ativação
intlayerPrune está ativo apenas quando todas as seguintes condições são verdadeiras:
- O comando Vite é
build. build.optimizeétrue(ouundefined, que assume como padrãotruepara builds).build.purgeétruena sua configuração do Intlayer.
É automaticamente desativado quando editor.enabled é true porque o editor precisa do conteúdo completo do dicionário.