23 de fevereiro de 2021 • 4 min de leitura
Você pode adicionar várias configurações de desenvolvimento e produção definindo variáveis de ambiente em seu shell ou utilizando um arquivo .env. Informações tiradas da própria documentação do Create React App.
Por padrão, estas são as variáveis já existentes do React:
✅ = Usado
🚫 = Ignorado
CRA = Create React App
Variável | Dev | Prod | Uso |
---|---|---|---|
BROWSER | ✅ | 🚫 | Por padrão, o CRA abrirá o navegador padrão do sistema, favorecendo o Chrome no macOS. É possível especificar um navegador para substituir esse comportamento ou defini-lo como none para desativá-lo completamente. Se você precisar personalizar a forma como o navegador é iniciado, pode especificar em um script. Quaisquer argumentos passados para o npm start também serão passados para este script, e a url onde seu aplicativo é servido será o último argumento. O seu arquivo de script deve conter a extensão .js. |
BROWSER_ARGS | ✅ | 🚫 | Quando a variável de ambiente BROWSER é especificada, quaisquer argumentos que você definir para esta variável de ambiente serão passados para a instância do navegador. Vários argumentos são suportados como uma lista separada por espaço. Por padrão, nenhum argumento é passado para os navegadores. |
HOST | ✅ | 🚫 | Por padrão, o CRA se liga a todos os nomes de host no dispositivo (localhost, endereço de rede LAN, etc.). Você pode usar esta variável para especificar um host diferente. |
PORT | ✅ | 🚫 | Por padrão, o CRA tentará escutar na porta 3000 ou solicitará que você tente a próxima porta disponível. Você pode usar esta variável para especificar uma porta diferente. |
HTTPS | ✅ | 🚫 | Quando definido como true, o CRA executará no modo https. |
WDS_SOCKET_HOST | ✅ | 🚫 | Ao ser setado, o CRA executará com o websocket hostname que foi configurado. Normalmente, o webpack-dev-server padrão do hostname SockJS é window.location.hostname. Além disso você pode utilizar esta variável em dev local em mais de um projeto CRA ao mesmo tempo. |
WDS_SOCKET_PATH | ✅ | 🚫 | Ao ser setado, o CRA executará com o websocket path que foi configurado para o módulo de hot reloading. Normalmente, o webpack-dev-server padrão do pathname SockJS é /sockjs-node. Além disso você pode utilizar esta variável em dev local em mais de um projeto CRA ao mesmo tempo. |
WDS_SOCKET_PORT | ✅ | 🚫 | Ao ser setado, o CRA executará com o websocket port que foi configurado para o módulo de hot reloading. Normalmente, o webpack-dev-server padrão do port SockJS é window.location.port. Além disso você pode utilizar esta variável em dev local em mais de um projeto CRA ao mesmo tempo. |
PUBLIC_URL | ✅ | ✅ | CRA assume que seu app está hospedado na raiz ou em um subpath especificado no package.json. Normalmente, o CRA ignora o hostname. Você pode usar esta variável para forçar os recursos a serem referenciados literalmente a url que você fornecer(hostname incluído). Isto pode ser particularmente útil ao usar um CDN para hospedar seu app. |
BUILD_PATH | 🚫 | ✅ | Por padrão, o CRA vai compilar o projeto em um diretório /build adjacente ao seu /src. Você pode utilizar esta variável para especificar um novo caminho para o CRA. O BUILD_PATH deve ser especificado como um caminho relativo à raiz do seu projeto. |
CI | ✅ | ✅ | Quando setado para true, o CRA trata os avisos como falhas na compilação. Isso também faz com que o executor de testes não fique ativo inspecionando. Maioria dos CIs setam esta flag por default. |
REACT_EDITOR | ✅ | 🚫 | Quando o app quebra em desenvolvimento, você pode ver o erro com um stack trace clicável. Ao clicar nele, o CRA tentará determinar o editor que você está utilizando com base nos processos em execução atuais, e abrirá o arquivo de origem. Se você nunca fez isso, certifique-se de que a variável de ambiente PATH do seu sistema aponta para a pasta bin do seu editor. Você também pode definir como none para desativá-lo. |
CHOKIDAR_USEPOLLING | ✅ | 🚫 | Quando setado para true, o inspetor é executado em modo de pesquisa, conforme necessário dentro de uma VM. Use esta opção se o npm start não estiver detectando alterações. |
GENERATE_SOURCEMAP | 🚫 | ✅ | Quando setador para false, os sources maps não são gerados no build de produção. Isto resolve os problemas de falta de memória(OOM - Out of Memory) de algumas máquinas menores. |
INLINE_RUNTIME_CHUNK | 🚫 | ✅ | Por padrão, o CRA irá incorporar o script de tempo de execução no index.html durante o build de produção. Quando setado como false, o script não será incorporado e será importado como sempre. Normalmente isso é necessário quando se lida com CSP(Content Security Policy). |
IMAGE_INLINE_SIZE_LIMIT | 🚫 | ✅ | Por padrão, imagens menores que 10.000 bytes são codificadas como URI de dados em base64 e embutidas no CSS ou no build do artefato do JS. Você pode utilizar esta variável para controlar o tamanho limite em bytes das imagens. Para desativar é só definir a variável como 0. |
FAST_REFRESH | ✅ | 🚫 | Quando setado para false, o suporte experimental do Fast Refresh(atualização rápida) é desativando, permitindo assim que você possa ajustar seus componentes em tempo real sem recarregar a página. |
TSC_COMPILE_ON_ERROR | ✅ | ✅ | Quando setado para true, você pode executar e compilar projetos em TypeScript normalmente, mesmo se houver erros de verificação de tipo do TypeScript. Estes erros são exibidos como avisos no terminal e/ou no console do navegador. |
ESLINT_NO_DEV_ERRORS | ✅ | 🚫 | Quando setado para true, erros do ESLint são convertidos para avisos durante o desenvolvimento. Como resultado, na saída do ESLint não aparecerá mais a sobreposição de erro. |
DISABLE_ESLINT_PLUGIN | ✅ | ✅ | Quando setado para true, o eslint-webpack-plugin será completamente desabilitado. |
DISABLE_NEW_JSX_TRANSFORM | ✅ | ✅ | Quando setado para true, o JSX transform é desabilitado. Projetos novos utilizam uma versão do React que suporta isto por padrão, mas você pode desativá-lo em projetos existentes se não puder atualizar o React. |
Quando você deseja adicionar uma váriável customizada, é necessário utilizar na frente:
REACT_APP_
Exemplo:
Antes de tudo é necessário instalar o pacote: dotenv.
E adicionar o código no início de suas configurações:
require('dotenv').config()
Então crie o arquivo .env na raiz do projeto.
Dentro do arquivo adicione as variáveis assim:
REACT_APP_EXEMPLO=abcdef.
E para utilizar:
process.env.REACT_APP_EXEMPLO // irá retornar: abcdef
# Windows (cmd.exe)
set "REACT_APP_EXEMPLO=abcdef" && npm start
# Windows (Powershell)
($env:REACT_APP_EXEMPLO = "abcdef") -and (npm start)
# Linux, macOS (Bash)
REACT_APP_EXEMPLO=abcdef npm start
Fontes: