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

# Configuration de l'application Replit

> Découvrez comment configurer votre application Replit à l'aide des fichiers .replit et replit.nix.

Les applications Replit sont configurées avec deux fichiers : `.replit` et `replit.nix`. Ils affectent le comportement de votre application Replit, de l'exécution du code aux outils de développement et aux langages.

Ces fichiers de configuration sont masqués par défaut. Affichez-les dans votre application Replit en sélectionnant « Afficher les fichiers cachés » dans le menu de l'arborescence de fichiers.

<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="image" width="530" height="488" data-path="images/getting-started/show-hidden-files.png" />
</Frame>

## Fichier `replit.nix`

Replit utilise `Nix` pour gérer les packages et les environnements. Le fichier `replit.nix` est utilisé pour :

**Spécifier les dépendances système :** Définissez exactement quels packages logiciels votre application Replit requiert, gérés via Nix, un gestionnaire de packages.

**Créer des environnements reproductibles :** Assurez-vous que votre environnement de développement est cohérent et reproductible, idéal pour les projets collaboratifs et les tests sur plusieurs systèmes.

Vous pouvez gérer les packages Nix visuellement via l'outil `Dépendances`. En savoir plus dans le guide des [Dépendances système](/references/project-setup/dependency-management#system-dependencies).

Pour configurer les packages avec le fichier `replit.nix`, vous pouvez lister les [packages Nix](https://search.nixos.org/packages) dans le tableau `deps`, préfixés par `pkgs.`. Toute modification sera synchronisée après le rechargement de votre shell.

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

## Fichier `.replit`

Le fichier `.replit` contrôle le comportement de votre application Replit. Il utilise le [format de configuration](https://toml.io/en/) `toml`. Voici quelques-uns des aspects clés qui peuvent être configurés :

**Commande d'exécution :** Spécifiez la commande qui s'exécute lorsque le bouton Exécuter est sélectionné. Chaque modèle dispose d'une commande d'exécution par défaut pour permettre l'exécution immédiate du code. Pour des applications plus personnalisées et complexes, utilisez des [Workflows](/references/workspace-tools/workflows).

**Language Server Protocol (LSP)** : Fournit des fonctionnalités telles que l'auto-complétion, la navigation dans le code, la coloration syntaxique et le linting en temps réel avec signalement des erreurs.

**Variables d'environnement :** Définissez et gérez les variables d'environnement essentielles au bon fonctionnement de vos applications.

**Dépendances et packages :** Gérez les installations de packages et les configurations directement via le fichier `.replit`, en vous assurant que votre application Replit dispose de tous les outils nécessaires dès le démarrage. Vous pouvez gérer les dépendances visuellement via l'outil `Dépendances`. En savoir plus dans le guide des [Modules système](/references/project-setup/dependency-management#advanced-configuration).

Pour les applications Python, le fichier `.replit` par défaut ressemble à :

```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"
```

Le tableau suivant fournit un aperçu de chaque paramètre dans le fichier `.replit`, expliquant ce que fait chaque configuration et son impact sur l'environnement de l'application Replit.

| **Clé de configuration**                        | **Valeur/Exemple**                     | **Description**                                                                                                                                                                                                                        |
| ----------------------------------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a name="entrypoint" />`entrypoint`             | `main.py`                              | Spécifie le fichier principal à exécuter et à afficher par défaut lorsque l'éditeur est ouvert. Vous pouvez renommer le fichier en fonction de votre application.                                                                      |
| <a name="modules" />`modules`                   | `["python-3.10:v18-20230807-322e88b"]` | Définit des versions spécifiques de langages de programmation ou d'autres dépendances majeures prises en charge par Replit.                                                                                                            |
| <a name="nix" />`[nix]`                         |                                        | Spécifie les paramètres pour utiliser Nix, un gestionnaire de packages, pour gérer les dépendances système. Consultez le document [Gestion des dépendances](/references/project-setup/dependency-management) pour plus d'informations. |
| <a name="channel" />`channel`                   | `stable-23_05`                         | Indique le canal Nix à utiliser, ce qui affecte les versions des dépendances système disponibles.                                                                                                                                      |
| <a name="packages" />`packages`                 | `["cowsay", "htop"]`                   | Spécifie certains packages Nix à installer. Pour un contrôle plus précis, vous pouvez également utiliser `replit.nix`.                                                                                                                 |
| <a name="unitTest" />`[unitTest]`               |                                        | Configure les paramètres liés aux tests unitaires dans l'application Replit.                                                                                                                                                           |
| <a name="language" />`language`                 | `python3`                              | Spécifie le langage utilisé pour les tests unitaires, indiquant que Python 3 est utilisé pour écrire les tests.                                                                                                                        |
| <a name="gitHubImport" />`[gitHubImport]`       |                                        | Paramètres qui affectent la façon dont les projets sont importés depuis GitHub, notamment quels fichiers doivent être inclus.                                                                                                          |
| <a name="requiredFiles" />`requiredFiles`       | `[".replit", "replit.nix"]`            | Liste les fichiers qui doivent être présents lors de l'importation du projet pour s'assurer qu'il fonctionne correctement.                                                                                                             |
| <a name="deployment" />`[deployment]`           |                                        | Contient les paramètres pour déployer l'application depuis l'application Replit vers un environnement de production.                                                                                                                   |
| <a name="run" />`run`                           | `["python3", "main.py"]`               | Commande exécutée pour démarrer l'application lors du déploiement.                                                                                                                                                                     |
| <a name="deploymentTarget" />`deploymentTarget` | `cloudrun`                             | Spécifie la plateforme cible de déploiement pour l'hébergement de l'application.                                                                                                                                                       |

Maintenant que vous avez une idée des configurations par défaut du fichier `.replit`, utilisez les sections suivantes pour comprendre comment configurer les paramètres de base et avancés de votre application Replit.

## Configuration des paramètres de base

### Point d'entrée

Il s'agit du fichier principal de votre projet. Si vous ne définissez pas de propriété `run`, le fichier `entrypoint` est celui qui sera exécuté par le runtime.

```toml theme={null}
entrypoint = "<nom-du-fichier>.py"
```

### Commande `Run`

La propriété `run` dans le fichier `.replit` est une fonctionnalité clé qui détermine la commande initiale ou la série de commandes exécutées lorsque le bouton `Exécuter` est sélectionné dans un environnement Replit. La commande `Run` peut être spécifiée soit comme une chaîne représentant la commande à exécuter, soit comme un tableau de chaînes représentant la commande et ses arguments individuels.

Quelques façons courantes de configurer la commande `Run` :

* **Commande unique :**
  Cet exemple montre comment passer une seule commande à exécuter directement dans l'application Replit. Avec ceci dans votre fichier `.replit`, appuyer sur le bouton `Exécuter` affichera un message d'accueil dans le panneau `Console` :
  **Exemple :** `run = "echo 'Hello, Replit!'"`

* **Arguments explicites :**
  Dans certaines situations, il peut être avantageux d'être plus explicite, évitant ainsi la nécessité d'analyser les guillemets ou les règles d'interpolation du shell. Vous pouvez réécrire l'exemple ci-dessus pour séparer les arguments.
  Notez que vous n'avez plus besoin des deux `'` et `"`, puisque vous passez explicitement le message d'accueil comme premier et unique argument à `echo` :
  **Exemple :** `run = ["echo", "Hello, Replit!"]`

* **Commandes multiples :**
  Cet exemple montre comment exécuter plusieurs processus simultanément, comme un frontend et un backend. Cela peut être utile si vous développez un backend Python et un frontend TypeScript, où chaque serveur se lie à un port différent :
  **Exemple :** `run = "python -m app & npm run start & wait"`

#### Gestion des processus

Bien que plusieurs commandes puissent être exécutées simultanément avec `&`, vous pouvez vouloir une meilleure expérience pour distinguer les journaux entre les services. Vous pouvez [ajouter des dépendances système](/references/project-setup/dependency-management#system-dependencies) comme [`process-compose`](https://github.com/F1bonacc1/process-compose) pour mieux orchestrer plusieurs processus.

#### Phase `Build`

Pour certains langages ou runtimes, il existe une phase de compilation séparée avant que le code puisse être `exécuté`. Cela concerne à la fois les langages compilés comme TypeScript, Golang ou Java, ou propose un paramètre que vous pouvez utiliser pour réinitialiser votre environnement, vos données ou votre configuration avant que la prochaine exécution `run` ne soit invoquée.

* **Compilation :**
  Dans un dépôt TypeScript, vous pourriez avoir besoin d'exécuter `tsc` avant d'exécuter votre code.
  **Exemple :**

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

#### Inclure des variables d'environnement

Pour fournir des variables d'environnement à votre service avant l'exécution, vous pouvez étendre la propriété `run` en une [table](https://toml.io/en/v1.0.0#table).

Il s'agit d'une modification plus complexe, qui nécessite probablement de déplacer l'emplacement de votre propriété `run = "..."` dans votre fichier `.replit`.

La diff suivante montre comment fournir la commande via `args` de `[run]`, ainsi que la variable `NAME` fournie dans `[run.env]` :

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

 modules = ["nodejs-20"]

 hidden = [".pythonlibs"]

+# Nous devons déplacer notre nouveau [run] après toutes les
+# propriétés de niveau supérieur qui ne commencent pas par `[` !
+[run]
+args = ["bash", "-c", "echo \"Hello, $NAME!\""]
+
+[run.env]
+NAME="Replit"

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

#### Interactivité

Les programmes interactifs peuvent également être lancés via le bouton `Exécuter`, offrant un moyen de distinguer votre environnement de développement du terminal où votre programme s'exécute.
Considérez le script de comptage suivant :

**Exemple**

```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): "
```

## Options de configuration avancées

Explorez les options de configuration détaillées disponibles pour votre application Replit. Vous pouvez personnaliser votre environnement de développement, gérer les commandes d'exécution, intégrer des services de langage et gérer les dépendances.

| **Configuration** | **Clé**                             | **Valeur/Exemple**                          | **Description**                                                                                |
| ----------------- | ----------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| onBoot            | <a name="onBoot" />`onBoot`         | `onBoot = "npm install"`                    | Commande qui s'exécute au démarrage de l'application Replit.                                   |
| compile           | <a name="compile" />`compile`       | (Pas d'exemple par défaut)                  | Commande qui s'exécute avant la commande `run`, utilisée dans les langages compilés comme C++. |
| language          | <a name="language" />`language`     | `language = "javascript"`                   | Spécifie le langage lors d'un import GitHub ou lors de la création d'une application Replit.   |
| entrypoint        | <a name="entrypoint" />`entrypoint` | `entrypoint = "index.js"`                   | Fichier principal à exécuter et à afficher lors de l'ouverture de l'éditeur.                   |
| hidden            | <a name="hidden" />`hidden`         | `hidden = [".config", "package-lock.json"]` | Fichiers ou dossiers à masquer par défaut dans l'arborescence de fichiers latérale.            |
| audio             | <a name="audio" />`audio`           | `audio = true`                              | Active l'audio système lorsque défini à `true`.                                                |

### Remarques sur l'audio système

Lorsque vous définissez `audio = true` dans votre fichier `.replit`, vous devrez peut-être exécuter `kill 1` dans un shell pour forcer la prise en compte du nouveau paramètre.

Lors de l'exécution d'une application graphique, vous verrez une paire d'écouteurs avec une case à cocher dans le coin inférieur droit du panneau `Sortie`.
En raison des restrictions du navigateur, cela devra être activé à chaque actualisation.

```toml theme={null}
# Assurez-vous que cela se trouve en haut de votre fichier `.replit`, en dehors de toute section entre crochets `[`
audio = true
```

## Configuration du packager

| **Configuration** | **Clé**                                           | **Valeur/Exemple**                            | **Description**                                                                                        |
| ----------------- | ------------------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| packager          | <a name="language" />`language`                   | `packager.language = "python3"`               | Langage utilisé pour les opérations de packages.                                                       |
| packager features | <a name="guessImports" />`guessImports`           | `packager.features.guessImports = true`       | Devine automatiquement les packages à installer avant d'exécuter l'application Replit.                 |
| packager features | <a name="packageSearch" />`packageSearch`         | `packager.features.packageSearch = true`      | Active la prise en charge du packager lorsque défini à `true`.                                         |
| packager features | <a name="enabledForHosting" />`enabledForHosting` | `packager.features.enabledForHosting = false` | Définit si l'hébergement de l'application Replit nécessite l'exécution d'une installation de packages. |
| packager          | <a name="afterInstall" />`afterInstall`           | `afterInstall = "echo 'package installed'"`   | Commande exécutée après l'installation d'un nouveau package via le packager.                           |
| packager          | <a name="ignoredPaths" />`ignoredPaths`           | `ignoredPaths = [".git"]`                     | Chemins à ignorer lors de la tentative de deviner les packages.                                        |
| packager          | <a name="ignoredPackages" />`ignoredPackages`     | `ignoredPackages = ["twitter", "discord"]`    | Modules qui ne doivent jamais tenter de deviner un package lors de l'installation.                     |

### Exemple de configuration `.replit` pour la configuration du packager

```toml theme={null}
# Définir le langage pour l'application Replit
packager.language = "python3"

# Activer les fonctionnalités pour la gestion automatique des packages
[packager.features]
guessImports = true
packageSearch = true
enabledForHosting = false

# Commande à exécuter après chaque installation de package
packager.afterInstall = "echo 'Package installed successfully'"

# Définir les chemins et packages qui doivent être ignorés par le gestionnaire de packages
packager.ignoredPaths = [".git", "node_modules"]
packager.ignoredPackages = ["twitter", "discord"]

# Paramètres de déploiement supplémentaires
[deployment]
run = ["python3", "app.py"]
```

## Configuration du déploiement

| **Configuration** | **Clé**                               | **Valeur/Exemple**                   | **Description**                                                                      |
| ----------------- | ------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------ |
| deployment        | <a name="run" />`run`                 | `deployment.run = "npm start"`       | Commande qui s'exécute au démarrage d'un conteneur de déploiement.                   |
| deployment        | <a name="build" />`build`             | `deployment.build = "npm run build"` | Commande qui s'exécute avant d'exécuter un déploiement.                              |
| deployment        | <a name="ignorePorts" />`ignorePorts` | `deployment.ignorePorts = true`      | Si `true`, le succès du déploiement ne nécessite pas de vérification de port ouvert. |

### Exemple de configuration `.replit` pour la configuration du déploiement

```toml theme={null}

# Spécifie le point d'entrée principal du projet
entrypoint = "app.js"

# Paramètres de configuration pour le déploiement de l'application
[deployment]
run = "npm start"
build = "npm run build"
ignorePorts = true
```

<Note>
  **La configuration de l'interpréteur** a été dépréciée et n'est plus disponible dans Replit. Au lieu de cela, vous êtes encouragé à utiliser les commandes `Run` pour configurer la façon dont les scripts et les applications sont exécutés dans votre environnement d'application Replit.
</Note>

## Configuration des ports

| **Configuration** | **Clé**                                 | **Valeur/Exemple**  | **Description**                                  |
| ----------------- | --------------------------------------- | ------------------- | ------------------------------------------------ |
| ports             | <a name="localPort" />`localPort`       | `localPort = 3000`  | Port que Replit lie à un port externe.           |
| ports             | <a name="externalPort" />`externalPort` | `externalPort = 80` | Port accessible publiquement lié au `localPort`. |

### Exemple de fichier de configuration `.replit` pour la gestion des ports

```toml theme={null}
# Configuration réseau pour exposer votre application sur des ports spécifiques
[[ports]]
localPort = 3000
externalPort = 80
```

## Accéder aux métadonnées de l'environnement de l'application Replit

### Node.js

Pour accéder à toutes les variables d'environnement :

`console.log(process.env);`

Pour accéder à une seule variable (REPL\_SLUG) :

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

### Python

Pour accéder à toutes les variables d'environnement :

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

Pour accéder à une seule variable (REPL\_SLUG) :

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

### Rust

Pour accéder à toutes les variables d'environnement :

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

Pour accéder à une seule variable (REPL\_SLUG) :

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

## Variables d'environnement

Voici les variables d'environnement accessibles depuis votre application Replit :

| clé                                               | description                                                                                                                                                                                                                          |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a name="REPL_OWNER" />`REPL_OWNER`               | Le nom d'utilisateur du propriétaire de l'application Replit. Si votre application Replit est basée sur du texte et n'a pas de serveur web, `REPL_OWNER` reflétera la valeur de l'utilisateur actuel accédant à l'application Replit |
| <a name="REPL_ID" />`REPL_ID`                     | La chaîne UUID unique de votre application Replit                                                                                                                                                                                    |
| <a name="HOME" />`HOME`                           | Le chemin d'accueil de votre application Replit                                                                                                                                                                                      |
| <a name="system" />`system`                       | Le système d'exploitation exécuté sur votre application Replit                                                                                                                                                                       |
| <a name="LANG" />`LANG`                           | Définit la langue et l'encodage des caractères pour votre application Replit, affectant la façon dont le texte est traité et affiché                                                                                                 |
| <a name="REPL_IMAGE" />`REPL_IMAGE`               | L'image Docker qui correspond à votre application Replit                                                                                                                                                                             |
| <a name="REPL_LANGUAGE" />`REPL_LANGUAGE`         | Le langage de programmation configuré pour votre application Replit, utilisé pour déterminer l'environnement d'exécution et les outils                                                                                               |
| <a name="REPL_PUBKEYS" />`REPL_PUBKEYS`           | Un objet JSON sérialisé contenant différentes clés API publiques                                                                                                                                                                     |
| <a name="REPL_SLUG" />`REPL_SLUG`                 | Une version simplifiée et lisible par machine du nom de l'application Replit, appropriée pour une utilisation dans les URLs et les noms de fichiers                                                                                  |
| <a name="PRYBAR_FILE" />`PRYBAR_FILE`             | Le fichier principal/point d'entrée de votre application Replit                                                                                                                                                                      |
| <a name="REPLIT_DEV_DOMAIN" />`REPLIT_DEV_DOMAIN` | Fournit l'URL `replit.dev` pour votre application Replit dans l'éditeur de projet. Notez que cette variable d'environnement n'est pas disponible dans les déploiements                                                               |
