> ## 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

> Aprenda a configurar seu app Replit usando os arquivos .replit e replit.nix.

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

Esses arquivos de configuração ficam ocultos por padrão. Exiba-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 do sistema:** defina exatamente quais pacotes de software o seu Replit App exige, gerenciados através do Nix, um gerenciador de pacotes.

**Criar ambientes reprodutíveis:** garanta que seu ambiente de desenvolvimento seja consistente e reprodutível, ideal para projetos colaborativos e testes em vários sistemas.

Você pode gerenciar pacotes Nix visualmente através da ferramenta `Dependencies`. Saiba mais no guia de [Dependências do Sistema](/pt/features/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 depois que seu shell for 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 `toml` [configuration format](https://toml.io/en/). Aqui estão alguns dos principais aspectos que podem ser configurados:

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

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

**Variáveis de ambiente:** defina e gerencie variáveis de ambiente essenciais para que suas aplicações sejam executadas corretamente.

**Dependências e pacotes:** gerencie instalações e configurações de pacotes diretamente através do arquivo `.replit`, garantindo que seu Replit App tenha todas as ferramentas necessárias prontas na inicialização. Você pode gerenciar dependências visualmente através da ferramenta `Dependencies`. Saiba mais no guia de [Módulos do Sistema](/pt/features/project-setup/dependency-management#advanced-configuration).

Para aplicações Python, o arquivo `.replit` padrão é assim:

```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 apresenta uma visão de cada configuração dentro do arquivo `.replit`, explicando o que cada uma 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 na sua aplicação.                                                                                            |
| <a name="modules" />`modules`                   | `["python-3.10:v18-20230807-322e88b"]` | Define versões específicas de linguagens de programação ou outras dependências importantes suportadas pelo Replit.                                                                                                                               |
| <a name="nix" />`[nix]`                         |                                        | Especifica as configurações para usar o Nix, um gerenciador de pacotes, para gerenciar dependências do sistema. Consulte o documento de [Gerenciamento de Dependências](/pt/features/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 do sistema disponíveis.                                                                                                                                                  |
| <a name="packages" />`packages`                 | `["cowsay", "htop"]`                   | Especifica alguns pacotes Nix a serem instalados. Para um controle mais granular, você também pode usar o `replit.nix`.                                                                                                                          |
| <a name="unitTest" />`[unitTest]`               |                                        | Configura ajustes relacionados a testes unitários dentro do Replit App.                                                                                                                                                                          |
| <a name="language" />`language`                 | `python3`                              | Especifica a linguagem usada para testes unitários, indicando que o Python 3 é usado para escrever os testes.                                                                                                                                    |
| <a name="gitHubImport" />`[gitHubImport]`       |                                        | Configurações que afetam como projetos são importados do GitHub, especificamente quais arquivos precisam estar incluídos.                                                                                                                        |
| <a name="requiredFiles" />`requiredFiles`       | `[".replit", "replit.nix"]`            | Lista os arquivos que precisam estar presentes ao importar o projeto para garantir que ele funcione corretamente.                                                                                                                                |
| <a name="deployment" />`[deployment]`           |                                        | Contém configurações para publicar a aplicação do Replit App em um ambiente ao vivo.                                                                                                                                                             |
| <a name="run" />`run`                           | `["python3", "main.py"]`               | Comando executado para iniciar a aplicação durante a publicação.                                                                                                                                                                                 |
| <a name="deploymentTarget" />`deploymentTarget` | `cloudrun`                             | Especifica a plataforma de destino de publicação para hospedar a aplicação.                                                                                                                                                                      |

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

## Configurando ajustes básicos

### 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 essencial que determina o comando inicial ou a 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 ser executado, ou como um array de strings representando o comando e os argumentos individuais desse comando.

Algumas formas comuns de configurar o comando `Run`:

* **Comando único:**
  Este exemplo mostra como passar um único comando para ser executado 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 vantajoso ser mais explícito, evitando a necessidade de interpretar aspas ou regras de interpolação do shell. Você pode reescrever o exemplo acima para separar os argumentos.
  Observe que você não precisa mais de `'` e `"`, já que está passando explicitamente a saudação como o primeiro e único argumento para `echo`:
  **Exemplo:** `run = ["echo", "Hello, Replit!"]`

* **Vários comandos:**
  Este exemplo mostra como executar vários processos, como um frontend e um backend, simultaneamente. Isso pode ser útil se você estiver desenvolvendo um backend em python e um frontend em typescript, onde cada servidor é vinculado a uma porta diferente:
  **Exemplo:** `run = "python -m app & npm run start & wait"`

#### Gerenciamento de processos

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

#### Fase de `Build`

Para algumas linguagens ou runtimes, existe uma fase de compilação separada antes que o código possa ser executado (`run`). Isso abrange 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 a localização da sua propriedade `run = "..."` dentro do seu arquivo `.replit`.

O diff a seguir mostra como fornecer o comando por meio de `args` em `[run]`, além da variável `NAME` fornecida em `[run.env]`:

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

 modules = ["nodejs-20"]

 hidden = [".pythonlibs"]

+# Precisamos mover nosso novo [run] para depois de todas as
+# propriedades de nível superior que não começam com `[`!
+[run]
+args = ["bash", "-c", "echo \"Hello, $NAME!\""]
+
+[run.env]
+NAME="Replit"

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

#### Interatividade

Programas interativos também podem ser iniciados através do botão `Run`, oferecendo uma forma de distinguir seu ambiente de desenvolvimento do terminal onde o seu programa é 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çada

Explore as opções de configuração detalhadas disponíveis para o seu Replit App. Você pode personalizar seu ambiente de desenvolvimento, gerenciar comandos de execução, 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 executado quando o Replit App inicializa.                                  |
| 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 a ser executado e exibido ao abrir o editor.                     |
| hidden           | <a name="hidden" />`hidden`         | `hidden = [".config", "package-lock.json"]` | Arquivos ou pastas a serem ocultados por padrão na árvore de arquivos lateral.     |
| audio            | <a name="audio" />`audio`           | `audio = true`                              | Ativa o Áudio do Sistema quando definido como `true`.                              |

### Notas sobre o Áudio do Sistema

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

Ao executar uma aplicação gráfica, você verá um par de fones de ouvido com uma caixa de seleção no canto inferior direito do painel `Output`.
Devido a restrições do navegador, isso precisará ser ativado a cada atualização da página.

```toml theme={null}
# Certifique-se de que isso esteja no topo do seu arquivo `.replit`, fora de qualquer seção entre `[`
audio = true
```

## Configuração do packager

| **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 pacotes a serem instalados antes de executar o Replit App. |
| packager features | <a name="packageSearch" />`packageSearch`         | `packager.features.packageSearch = true`      | Ativa o suporte ao packager quando definido como `true`.                           |
| packager features | <a name="enabledForHosting" />`enabledForHosting` | `packager.features.enabledForHosting = false` | Define se hospedar o Replit App exige a execução de uma instalação de pacotes.     |
| packager          | <a name="afterInstall" />`afterInstall`           | `afterInstall = "echo 'package installed'"`   | Comando executado após a instalação de um novo pacote via packager.                |
| packager          | <a name="ignoredPaths" />`ignoredPaths`           | `ignoredPaths = [".git"]`                     | Caminhos a serem ignorados 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 configuração do packager

```toml theme={null}
# Define a linguagem para o Replit App
packager.language = "python3"

# Ativa recursos para gerenciamento automático de pacotes
[packager.features]
guessImports = true
packageSearch = true
enabledForHosting = false

# Comando a ser executado após cada instalação de pacote
packager.afterInstall = "echo 'Package installed successfully'"

# Define caminhos e pacotes que devem ser ignorados pelo gerenciador de pacotes
packager.ignoredPaths = [".git", "node_modules"]
packager.ignoredPackages = ["twitter", "discord"]

# Configurações adicionais de publicação
[deployment]
run = ["python3", "app.py"]
```

## Configuração de publicação (deployment)

| **Configuração** | **Chave**                             | **Valor/Exemplo**                    | **Descrição**                                                                 |
| ---------------- | ------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------- |
| deployment       | <a name="run" />`run`                 | `deployment.run = "npm start"`       | Comando executado quando um container de Deployment é iniciado.               |
| 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 da publicação não exige uma verificação de porta aberta. |

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

```toml theme={null}

# Especifica o ponto de entrada principal do projeto
entrypoint = "app.js"

# Configurações para publicar a aplicação
[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, recomenda-se usar os comandos `Run` para configurar como scripts e aplicações são executados dentro do ambiente do seu 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 à `localPort`. |

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

```toml theme={null}
# Configuração de rede para expor sua aplicação em portas específicas
[[ports]]
localPort = 3000
externalPort = 80
```

## Acessando os 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 um servidor web, `REPL_OWNER` refletirá o valor do usuário atual que está acessando o Replit App |
| <a name="REPL_ID" />`REPL_ID`                     | A string UUID exclusiva 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 o idioma e a codificação de caracteres do 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 convertido em 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 a URL `replit.dev` do seu Replit App no Project Editor. Observe que esta variável de ambiente não está disponível em Deployments                                                               |
