Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Histórico de versões
- "Integrado no intlayer(); inicialização da doc"v9.0.025/06/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
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, ointlayerCompileré incluído automaticamente dentro do plugin principalintlayer()quandocompiler.enabledétrueecompiler.outputestá 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:
Copiar o código para a área de transferência
// intlayer.config.tsimport { 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:
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 (quando necessário)
Copiar o código para a área de transferência
// vite.config.tsimport { defineConfig } from "vite";import { intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [intlayerCompiler()],});Opções
Copiar o código para a área de transferência
import type { IntlayerCompilerOptions } from "vite-intlayer";Abrir a tabela em um modal para ver todo o conteúdo claramente
| 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
Copiar o código para a área de transferência
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:
- Passa o conteúdo do arquivo através de
extractContentdo@intlayer/babel. - Chama
onExtractpara cada declaração encontrada, gravando o JSON do dicionário resultante emcompiler.output. - 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:
- Detecta a alteração do arquivo por meio do gancho (hook)
handleHotUpdatedo Vite. - Extrai novamente o conteúdo do arquivo atualizado.
- Grava o JSON do dicionário atualizado.
- 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.