babel-plugin-formatjs
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Processa mensagens de texto para tradução de módulos que utilizam react-intl, especificamente:
-
Analisa e verifica se as mensagens são compatíveis com ICU sem problemas de sintaxe.
-
Remove
descriptiondo descritor de mensagem para economizar bytes, pois não é usado em tempo de execução. -
Opção para remover
defaultMessagedo descritor de mensagem para economizar bytes, pois não é usado em tempo de execução. -
Injeta automaticamente o ID da mensagem com base em um padrão específico.
Instalação
- npm
- yarn
npm i babel-plugin-formatjs
yarn add babel-plugin-formatjs
Uso
Este plugin do Babel só processa módulos ES6 que import React Intl.
Os descritores de mensagem padrão para o idioma principal do app serão processados de: defineMessages(), defineMessage(), intl.formatMessage e <FormattedMessage>; todos sendo exportações nomeadas do pacote React Intl.
Via babel.config.json (Recomendado)
babel.config.json
{
"plugins": [
[
"formatjs",
{
"idInterpolationPattern": "[sha512:contenthash:base64:6]",
"ast": true
}
]
]
}
Via Node API
Os descritores de mensagem extraídos estão disponíveis na propriedade metadata do objeto retornado pela API transform() do Babel:
require('@babel/core').transform('code', {
plugins: ['formatjs'],
}) // => { code, map, ast, metadata['formatjs'].messages, metadata['formatjs'].meta };
Opções
overrideIdFn
Função com a assinatura (id: string, defaultMessage: string, description: string|object) => string que permite substituir o ID tanto no JavaScript extraído quanto nas mensagens.
idInterpolationPattern
Se determinados descritores de mensagem não possuírem ID, este pattern será usado para gerar IDs automaticamente. Padrão: [sha512:contenthash:base64:6]. Consulte nodejs crypto createHash para algoritmos de hash e nodejs buffer docs para codificações de digest.
removeDefaultMessage
Remove o campo defaultMessage no JS gerado após a extração.
additionalComponentNames
Nomes adicionais de componentes para extrair mensagens, ex: ['FormattedFooBarMessage']. NOTA: Por padrão verificamos se FormattedMessage é importado de moduleSourceName para garantir que aliases funcionem. Esta opção não faz essa verificação, sendo menos segura.
additionalFunctionNames
Nomes adicionais de funções para extrair mensagens, ex: ['$formatMessage']. Use se preferir apelidar formatMessage para algo mais curto como $t.
pragma
Analisa pragmas personalizados adicionais específicos. Permite marcar arquivos com metadados como project. Exemplo com este arquivo:
// @intl-meta project:my-custom-project
import {FormattedMessage} from 'react-intl'
;<FormattedMessage defaultMessage="foo" id="bar" />
e com a opção {pragma: "@intl-meta"}, extraímos // @intl-meta project:my-custom-project para {project: 'my-custom-project'} no arquivo resultante.
ast
Pré-analisa defaultMessage em AST para melhor desempenho em runtime. Esta flag não tem efeito quando removeDefaultMessage é true.
preserveWhitespace
Quando definido como true, desativa a remoção de espaços em branco das mensagens.