> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração do Replit App

> Saiba como configurar seu Replit App usando os arquivos .replit e replit.nix.

Os Replit Apps são configurados com dois arquivos: o `.replit` e o `replit.nix`. Eles afetam como o seu Replit App se comporta, desde a execução do código até as ferramentas de desenvolvimento e linguagens.

Esses arquivos de configuração estão ocultos por padrão. Mostre-os no seu Replit App selecionando "Show hidden files" no menu da árvore de arquivos.

<Frame>
  <img src="https://mintcdn.com/replit/rBzGsKp9NcWJ7sib/images/getting-started/show-hidden-files.png?fit=max&auto=format&n=rBzGsKp9NcWJ7sib&q=85&s=847e381d949d2432e58079ec166f1c08" alt="imagem" width="530" height="488" data-path="images/getting-started/show-hidden-files.png" />
</Frame>

## Arquivo `replit.nix`

O Replit usa o `Nix` para gerenciar pacotes e ambientes. O arquivo `replit.nix` é usado para:

**Especificar dependências de sistema:** Defina exatamente quais pacotes de software seu Replit App requer, gerenciados pelo Nix, um gerenciador de pacotes.

**Criar ambientes reproduzíveis:** Garanta que seu ambiente de desenvolvimento seja consistente e reproduzível, ideal para projetos colaborativos e testes em múltiplos sistemas.

Você pode gerenciar pacotes Nix visualmente por meio da ferramenta `Dependencies`. Saiba mais no guia de [Dependências de Sistema](/pt/references/project-setup/dependency-management#system-dependencies).

Para configurar pacotes com o arquivo `replit.nix`, você pode listar [pacotes Nix](https://search.nixos.org/packages) no array `deps`, prefixados com `pkgs.`. Quaisquer alterações serão sincronizadas após o shell ser recarregado.

```nix theme={null}
{ pkgs }: {
  deps = [
    pkgs.nodejs-19_x
    pkgs.nodePackages.typescript-language-server
    pkgs.yarn
    pkgs.replitPackages.jest
  ];
}
```

## Arquivo `.replit`

O arquivo `.replit` controla o comportamento do seu Replit App. Ele usa o [formato de configuração](https://toml.io/en/) `toml`. Aqui estão alguns dos principais aspectos que podem ser configurados:

**Comando Run:** Especifique o comando que é executado quando o botão Run é selecionado. Cada template tem um comando run padrão para permitir a execução imediata do código. Para aplicativos mais personalizados e complexos, use [Workflows](/pt/references/workspace-tools/workflows).

**Language Server Protocol (LSP)**: Fornece recursos como autocompletar, navegação de código, realce de código e linting e erros em tempo real.

**Variáveis de ambiente:** Defina e gerencie variáveis de ambiente essenciais para que seus aplicativos sejam executados corretamente.

**Dependências e pacotes:** Gerencie instalações e configurações de pacotes diretamente pelo arquivo `.replit`, garantindo que seu Replit App tenha todas as ferramentas necessárias prontas ao inicializar. Você pode gerenciar dependências visualmente por meio da ferramenta `Dependencies`. Saiba mais no guia de [Módulos de Sistema](/pt/references/project-setup/dependency-management#advanced-configuration).

Para aplicativos Python, o arquivo `.replit` padrão se parece com:

```toml theme={null}
entrypoint = "main.py"
modules = ["python-3.10:v18-20230807-322e88b"]

[nix]
channel = "stable-23_05"

[unitTest]
language = "python3"

[gitHubImport]
requiredFiles = [".replit", "replit.nix"]

[deployment]
run = ["python3", "main.py"]
deploymentTarget = "cloudrun"
```

A tabela a seguir fornece uma visão de cada configuração no arquivo `.replit`, explicando o que cada configuração faz e seu impacto no ambiente do Replit App.

| **Chave de configuração**                       | **Valor/Exemplo**                      | **Descrição**                                                                                                                                                                                                                                   |
| ----------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a name="entrypoint" />`entrypoint`             | `main.py`                              | Especifica o arquivo principal a ser executado e exibido por padrão quando o editor é aberto. Você pode renomear o arquivo com base no seu aplicativo.                                                                                          |
| <a name="modules" />`modules`                   | `["python-3.10:v18-20230807-322e88b"]` | Define versões específicas de linguagens de programação ou outras dependências principais suportadas pelo Replit.                                                                                                                               |
| <a name="nix" />`[nix]`                         |                                        | Especifica configurações para usar o Nix, um gerenciador de pacotes, para gerenciar dependências de sistema. Consulte o documento de [Gerenciamento de Dependências](/pt/references/project-setup/dependency-management) para mais informações. |
| <a name="channel" />`channel`                   | `stable-23_05`                         | Indica o canal Nix a ser usado, o que afeta as versões das dependências de sistema disponíveis.                                                                                                                                                 |
| <a name="packages" />`packages`                 | `["cowsay", "htop"]`                   | Especifica alguns pacotes Nix para instalar. Para um controle mais refinado, você também pode usar `replit.nix`.                                                                                                                                |
| <a name="unitTest" />`[unitTest]`               |                                        | Define configurações relacionadas a testes unitários dentro do Replit App.                                                                                                                                                                      |
| <a name="language" />`language`                 | `python3`                              | Especifica a linguagem usada para testes unitários, indicando que Python 3 é usado para escrever os testes.                                                                                                                                     |
| <a name="gitHubImport" />`[gitHubImport]`       |                                        | Configurações que afetam como os projetos são importados do GitHub, especificamente quais arquivos devem ser incluídos.                                                                                                                         |
| <a name="requiredFiles" />`requiredFiles`       | `[".replit", "replit.nix"]`            | Lista os arquivos que devem estar presentes ao importar o projeto para garantir que ele funcione corretamente.                                                                                                                                  |
| <a name="deployment" />`[deployment]`           |                                        | Contém configurações para publicar o aplicativo do Replit App em um ambiente ao vivo.                                                                                                                                                           |
| <a name="run" />`run`                           | `["python3", "main.py"]`               | Comando executado para iniciar o aplicativo durante o deployment.                                                                                                                                                                               |
| <a name="deploymentTarget" />`deploymentTarget` | `cloudrun`                             | Especifica a plataforma de destino do deployment para hospedar o aplicativo.                                                                                                                                                                    |

Agora que você tem uma ideia das configurações padrão do arquivo `.replit`, use as próximas seções para entender como configurar as definições básicas e avançadas para o seu Replit App.

## Configurando definições básicas

### Entrypoint

Este é o arquivo principal do seu projeto. Se você não definir uma propriedade `run`, o `entrypoint` é o arquivo que é executado pelo runtime.

```toml theme={null}
entrypoint = "<file-name>.py"
```

### Comando `Run`

A propriedade `run` no arquivo `.replit` é um recurso chave que determina o comando inicial ou série de comandos executados quando o botão `Run` é selecionado em um ambiente Replit. O comando `Run` pode ser especificado como uma string representando o comando a executar, ou como um array de strings representando o comando e argumentos individuais para esse comando.

Algumas formas comuns de configurar o comando `Run`:

* **Comando único:**
  Este exemplo mostra como passar um único comando para executar diretamente no Replit App. Com isso no seu arquivo `.replit`, pressionar o botão `Run` exibirá uma saudação no painel `Console`:
  **Exemplo:** `run = "echo 'Hello, Replit!'"`

* **Argumentos explícitos:**
  Em algumas situações pode ser benéfico ser mais explícito, evitando a necessidade de analisar aspas ou regras de interpolação de shell. Você pode reescrever o exemplo acima para separar os argumentos.
  Observe que você não precisa mais de `'` e `"`, pois está passando explicitamente a saudação como o primeiro e único argumento para `echo`:
  **Exemplo:** `run = ["echo", "Hello, Replit!"]`

* **Múltiplos comandos:**
  Este exemplo mostra como executar múltiplos processos, como um frontend e um backend, simultaneamente. Isso pode ser útil para desenvolver um backend Python e um frontend TypeScript, onde cada servidor se vincula a uma porta diferente:
  **Exemplo:** `run = "python -m app & npm run start & wait"`

#### Gerenciamento de processos

Embora múltiplos comandos possam ser executados simultaneamente com `&`, você pode querer uma experiência melhor para distinguir os logs entre serviços. Você pode [adicionar dependências de sistema](/pt/references/project-setup/dependency-management#system-dependencies) como [`process-compose`](https://github.com/F1bonacc1/process-compose) para orquestrar melhor múltiplos processos.

#### Fase `Build`

Para algumas linguagens ou runtimes, há uma fase de compilação separada antes que o código possa ser `executado`. Isso cobre tanto linguagens compiladas como TypeScript, Golang ou Java, quanto oferece um parâmetro que você pode usar para redefinir seu ambiente, dados ou configuração antes que o próximo `run` seja invocado.

* **Compilando:**
  Em um repositório TypeScript, você pode precisar executar `tsc` antes de executar seu código.
  **Exemplo:**

```toml theme={null}
build = "tsc app.ts"
run = "node app.js"
```

#### Incluindo variáveis de ambiente

Para fornecer variáveis de ambiente ao seu serviço antes da execução, você pode expandir a propriedade `run` em uma [tabela](https://toml.io/en/v1.0.0#table).

Esta é uma mudança mais elaborada e provavelmente requer mover onde sua propriedade `run = "..."` está localizada dentro do seu arquivo `.replit`.

O diff a seguir mostra o fornecimento do comando por meio de `args` do `[run]`, bem como a variável `NAME` fornecida em `[run.env]`:

```diff theme={null}
-run = ["bash", "-c", "echo \"Hello, $NAME!\""]

 modules = ["nodejs-20"]

 hidden = [".pythonlibs"]

+# We need to move our new [run] down past all the
+# top-level properties that do not start with a `[`!
+[run]
+args = ["bash", "-c", "echo \"Hello, $NAME!\""]
+
+[run.env]
+NAME="Replit"

 [nix]
 channel = "stable-23_11"
```

#### Interatividade

Programas interativos também podem ser iniciados pelo botão `Run`, oferecendo uma forma de distinguir seu ambiente de desenvolvimento do terminal onde seu programa está sendo executado.
Considere o seguinte script de contagem:

**Exemplo**

```toml theme={null}
[run]
args = ["bash", "-c", """
count=0
while read -p "$PROMPT" -r next && [ -n "$next" ]; do
    count=$((count+next))
done
echo "The numbers you entered sum to $count!"
"""]

[run.env]
PROMPT = "Next number ([Enter] to end): "
```

## Opções de configuração avançadas

Explore as opções de configuração detalhadas disponíveis para o seu Replit App. Você pode personalizar seu ambiente de desenvolvimento, gerenciar comandos run, integrar serviços de linguagem e lidar com dependências.

| **Configuração** | **Chave**                           | **Valor/Exemplo**                           | **Descrição**                                                                      |
| ---------------- | ----------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------- |
| onBoot           | <a name="onBoot" />`onBoot`         | `onBoot = "npm install"`                    | Comando que é executado quando o Replit App inicia.                                |
| compile          | <a name="compile" />`compile`       | (Sem exemplo padrão)                        | Comando executado antes do comando `run`, usado em linguagens compiladas como C++. |
| language         | <a name="language" />`language`     | `language = "javascript"`                   | Especifica a linguagem durante uma importação do GitHub ou ao criar um Replit App. |
| entrypoint       | <a name="entrypoint" />`entrypoint` | `entrypoint = "index.js"`                   | Arquivo principal para executar e exibir ao abrir o editor.                        |
| hidden           | <a name="hidden" />`hidden`         | `hidden = [".config", "package-lock.json"]` | Arquivos ou pastas para ocultar por padrão na árvore de arquivos lateral.          |
| audio            | <a name="audio" />`audio`           | `audio = true`                              | Habilita o Áudio do Sistema quando definido como `true`.                           |

### Notas sobre o Áudio do Sistema

Ao definir `audio = true` no seu arquivo `.replit`, talvez seja necessário executar `kill 1` em um shell para forçar a nova configuração a entrar em vigor.

Ao executar um aplicativo gráfico, você verá um par de fones de ouvido com uma caixa de seleção no canto inferior direito do painel `Output`.
Devido às restrições do navegador, isso precisará ser habilitado toda vez que você atualizar.

```toml theme={null}
# Ensure this is at the top of your `.replit` file, outside of any `[`-bracketed section
audio = true
```

## Configuração do gerenciador de pacotes

| **Configuração**  | **Chave**                                         | **Valor/Exemplo**                             | **Descrição**                                                                  |
| ----------------- | ------------------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------ |
| packager          | <a name="language" />`language`                   | `packager.language = "python3"`               | Linguagem usada para operações de pacotes.                                     |
| packager features | <a name="guessImports" />`guessImports`           | `packager.features.guessImports = true`       | Detecta automaticamente os pacotes a instalar antes de executar o Replit App.  |
| packager features | <a name="packageSearch" />`packageSearch`         | `packager.features.packageSearch = true`      | Habilita suporte ao gerenciador de pacotes quando definido como `true`.        |
| packager features | <a name="enabledForHosting" />`enabledForHosting` | `packager.features.enabledForHosting = false` | Define se hospedar o Replit App requer a execução de uma instalação de pacote. |
| packager          | <a name="afterInstall" />`afterInstall`           | `afterInstall = "echo 'package installed'"`   | Comando executado após a instalação de um novo pacote pelo gerenciador.        |
| packager          | <a name="ignoredPaths" />`ignoredPaths`           | `ignoredPaths = [".git"]`                     | Caminhos a ignorar ao tentar detectar pacotes.                                 |
| packager          | <a name="ignoredPackages" />`ignoredPackages`     | `ignoredPackages = ["twitter", "discord"]`    | Módulos que nunca devem tentar detectar um pacote durante a instalação.        |

### Exemplo de configuração `.replit` para o gerenciador de pacotes

```toml theme={null}
# Define the language for the Replit App
packager.language = "python3"

# Enable features for automatic package management
[packager.features]
guessImports = true
packageSearch = true
enabledForHosting = false

# Command to run after each package installation
packager.afterInstall = "echo 'Package installed successfully'"

# Define paths and packages that should be ignored by the package manager
packager.ignoredPaths = [".git", "node_modules"]
packager.ignoredPackages = ["twitter", "discord"]

# Additional deployment settings
[deployment]
run = ["python3", "app.py"]
```

## Configuração de deployment

| **Configuração** | **Chave**                             | **Valor/Exemplo**                    | **Descrição**                                                              |
| ---------------- | ------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------- |
| deployment       | <a name="run" />`run`                 | `deployment.run = "npm start"`       | Comando executado quando um contêiner de Deployment inicia.                |
| deployment       | <a name="build" />`build`             | `deployment.build = "npm run build"` | Comando executado antes de executar um Deployment.                         |
| deployment       | <a name="ignorePorts" />`ignorePorts` | `deployment.ignorePorts = true`      | Se `true`, o sucesso do deployment não requer verificação de porta aberta. |

### Exemplo de configuração `.replit` para deployment

```toml theme={null}

# Specifies the main entry point for the project
entrypoint = "app.js"

# Configuration settings for deploying the application
[deployment]
run = "npm start"
build = "npm run build"
ignorePorts = true
```

<Note>
  A **configuração do Interpreter** foi descontinuada e não está mais disponível no Replit. Em vez disso, você é incentivado a usar os comandos `Run` para configurar como scripts e aplicativos são executados dentro do seu ambiente Replit App.
</Note>

## Configuração de portas

| **Configuração** | **Chave**                               | **Valor/Exemplo**   | **Descrição**                                          |
| ---------------- | --------------------------------------- | ------------------- | ------------------------------------------------------ |
| ports            | <a name="localPort" />`localPort`       | `localPort = 3000`  | Porta que o Replit vincula a uma porta externa.        |
| ports            | <a name="externalPort" />`externalPort` | `externalPort = 80` | Porta publicamente acessível vinculada ao `localPort`. |

### Exemplo de arquivo de configuração `.replit` para gerenciamento de portas

```toml theme={null}
# Networking configuration to expose your application on specific ports
[[ports]]
localPort = 3000
externalPort = 80
```

## Acessando metadados do ambiente do Replit App

### Node.js

Para acessar todas as variáveis de ambiente:

`console.log(process.env);`

Para acessar uma única variável (REPL\_SLUG):

`console.log(process.env.REPL_SLUG);`

### Python

Para acessar todas as variáveis de ambiente:

```python theme={null}
import os
print(os.environ)
```

Para acessar uma única variável (REPL\_SLUG):

```python theme={null}
import os
variable = os.environ.get('REPL_SLUG')
print(variable)
```

### Rust

Para acessar todas as variáveis de ambiente:

```rust theme={null}
use std::env;
fn main() {
    for (key, value) in env::vars() {
        println!("{}: {}", key, value);
    }
}
```

Para acessar uma única variável (REPL\_SLUG):

```rust theme={null}
use std::env;
fn main() {
    let variable = env::var("REPL_SLUG").unwrap();
    println!("{}", variable);
}
```

## Variáveis de ambiente

A seguir estão as variáveis de ambiente acessíveis de dentro do seu Replit App:

| chave                                             | descrição                                                                                                                                                                                   |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a name="REPL_OWNER" />`REPL_OWNER`               | O nome de usuário do proprietário do Replit App. Se o seu Replit App for baseado em texto e não tiver servidor web, `REPL_OWNER` refletirá o valor do usuário atual que acessa o Replit App |
| <a name="REPL_ID" />`REPL_ID`                     | A string UUID única do seu Replit App                                                                                                                                                       |
| <a name="HOME" />`HOME`                           | O caminho home do seu Replit App                                                                                                                                                            |
| <a name="system" />`system`                       | O sistema operacional em execução no seu Replit App                                                                                                                                         |
| <a name="LANG" />`LANG`                           | Define a linguagem e a codificação de caracteres para o seu Replit App, afetando como o texto é processado e exibido                                                                        |
| <a name="REPL_IMAGE" />`REPL_IMAGE`               | A imagem docker que corresponde ao seu Replit App                                                                                                                                           |
| <a name="REPL_LANGUAGE" />`REPL_LANGUAGE`         | A linguagem de programação configurada para o seu Replit App, usada para determinar o ambiente de runtime e as ferramentas                                                                  |
| <a name="REPL_PUBKEYS" />`REPL_PUBKEYS`           | Um objeto JSON em formato string contendo diferentes chaves de API públicas                                                                                                                 |
| <a name="REPL_SLUG" />`REPL_SLUG`                 | Uma versão simplificada e legível por máquina do nome do Replit App, adequada para uso em URLs e nomes de arquivos                                                                          |
| <a name="PRYBAR_FILE" />`PRYBAR_FILE`             | O arquivo principal/entrypoint do seu Replit App                                                                                                                                            |
| <a name="REPLIT_DEV_DOMAIN" />`REPLIT_DEV_DOMAIN` | Fornece o URL `replit.dev` para o seu Replit App no Editor de Projeto. Observe que esta variável de ambiente não está disponível em Deployments                                             |
