

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration des paramètres de compilation de monorepo
<a name="monorepo-configuration"></a>

Lorsque vous stockez plusieurs projets ou microservices dans un seul référentiel, cela s'appelle un monorepo. Vous pouvez utiliser Amplify Hosting pour déployer des applications dans un monorepo sans créer plusieurs configurations de build ou de branche.

Amplify prend en charge les applications en monorepos génériques ainsi que les applications en monorepos créées à l'aide de npm workspace, pnpm workspace, Yarn workspace, Nx et Turborepo. Lorsque vous déployez votre application, Amplify détecte automatiquement l'outil de génération monorepo que vous utilisez. Amplify applique automatiquement les paramètres de génération pour les applications dans un espace de travail npm, un espace de travail Yarn ou Nx. Les applications Turborepo et pnpm nécessitent une configuration supplémentaire. Pour de plus amples informations, veuillez consulter [Configuration des applications Turborepo et pnpm monorepo](#turborepo-pnpm-monorepo-configuration).

Vous pouvez enregistrer les paramètres de compilation d'un monorepo dans la console Amplify ou vous pouvez télécharger le `amplify.yml` fichier et l'ajouter à la racine de votre référentiel. Amplify applique les paramètres enregistrés dans la console à toutes vos branches sauf s'il trouve un `amplify.yml` fichier dans votre référentiel. Lorsqu'un `amplify.yml` fichier est présent, ses paramètres remplacent tous les paramètres de compilation enregistrés dans la console Amplify.

## Référence syntaxique YAML de la spécification de build Monorepo
<a name="monorepo-yml-syntax"></a>

La syntaxe YAML pour une spécification de build monorepo est différente de la syntaxe YAML pour un dépôt contenant une seule application. Pour un monorepo, vous déclarez chaque projet dans une liste d'applications. Vous devez fournir la `appRoot` clé supplémentaire suivante pour chaque application que vous déclarez dans la spécification de construction de votre monorepo :

**par Root**  
Racine, au sein du référentiel, dans laquelle l'application démarre. Cette clé doit exister et avoir la même valeur que la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement. Pour obtenir des instructions sur la définition de cette variable d'environnement, consultez[Configuration de la variable d'environnement AMPLIFY\$1MONOREPO\$1APP\$1ROOT](#setting-monorepo-environment-variable).

L'exemple de spécification de construction de monorepo suivant montre comment déclarer plusieurs applications Amplify dans le même dépôt. Les deux applications`react-app`, et `angular-app` sont déclarées dans la `applications` liste. La `appRoot` clé de chaque application indique que l'application se trouve dans le dossier `apps` racine du dépôt.

L'`buildpath`attribut est défini pour exécuter et créer l'application `/` à partir de la racine du projet monorepo. L'`baseDirectory`attribut est le chemin relatif de`buildpath`.

### Syntaxe YAML de la spécification de construction Monorepo
<a name="monorepo-build-yaml-syntax"></a>

```
version: 1
applications:
  - appRoot: apps/react-app
    env:
      variables:
        key: value
    backend:
      phases:
        preBuild:
          commands:
            - *enter command*
        build:
          commands:
            - *enter command*
        postBuild:
            commands:
            - *enter command*
    frontend:
      buildPath: / # Run install and build from the monorepo project root
      phases:
        preBuild:
          commands:
            - *enter command*
            - *enter command*
        build:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        discard-paths: yes
        baseDirectory: location
      cache:
        paths:
            - path
            - path
    test:
      phases:
        preTest:
          commands:
            - *enter command*
        test:
          commands:
            - *enter command*
        postTest:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        configFilePath: *location*
        baseDirectory: *location*
  - appRoot: apps/angular-app
    env:
      variables:
        key: value
    backend:
      phases:
        preBuild:
          commands:
            - *enter command*
        build:
          commands:
            - *enter command*
        postBuild:
            commands:
            - *enter command*
    frontend:
      phases:
        preBuild:
          commands:
            - *enter command*
            - *enter command*
        build:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        discard-paths: yes
        baseDirectory: location
      cache:
        paths:
            - path
            - path
    test:
      phases:
        preTest:
          commands:
            - *enter command*
        test:
          commands:
            - *enter command*
        postTest:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        configFilePath: *location*
        baseDirectory: *location*
```

Une application utilisant l'exemple de spécification de construction suivant sera créée sous la racine du projet et les artefacts de construction seront situés à l'adresse`/packages/nextjs-app/.next`.

```
applications:
  - frontend:
      buildPath: '/'  # run install and build from monorepo project root
      phases:
        preBuild:
          commands:
            - npm install
        build:
          commands:
            - npm run build --workspace=nextjs-app
      artifacts:
        baseDirectory: packages/nextjs-app/.next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    appRoot: packages/nextjs-app
```

## Configuration de la variable d'environnement AMPLIFY\$1MONOREPO\$1APP\$1ROOT
<a name="setting-monorepo-environment-variable"></a>

Lorsque vous déployez une application stockée dans un monorepo, la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement de l'application doit avoir la même valeur que le chemin de la racine de l'application, par rapport à la racine de votre dépôt. Par exemple, un monorepo nommé `ExampleMonorepo` avec un dossier racine nommé`apps`, qui contient, `app1``app2`, et `app3` possède la structure de répertoires suivante :

```
ExampleMonorepo
  apps
    app1
    app2
    app3
```

Dans cet exemple, la valeur de la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement for `app1` est`apps/app1`.

Lorsque vous déployez une application monorepo à l'aide de la console Amplify, celle-ci définit automatiquement la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement en utilisant la valeur que vous spécifiez pour le chemin d'accès à la racine de l'application. Toutefois, si votre application monorepo existe déjà dans Amplify ou est déployée à l'aide de AWS CloudFormation, vous devez définir manuellement la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement dans la section **Variables d'environnement de la console** Amplify.

### Définition automatique de la variable d'environnement AMPLIFY\$1MONOREPO\$1APP\$1ROOT lors du déploiement
<a name="setting-monorepo-environmnet-variable-automatically"></a>

Les instructions suivantes montrent comment déployer une application monorepo avec la console Amplify. Amplify définit automatiquement la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement à l'aide du dossier racine de l'application que vous spécifiez dans la console.

**Pour déployer une application monorepo avec la console Amplify**

1. Connectez-vous à la console [Amplify AWS Management Console](https://console.aws.amazon.com/amplify/) et ouvrez-la.

1. Choisissez **Créer une nouvelle application** dans le coin supérieur droit.

1. **Sur la page **Commencer à créer avec Amplify**, choisissez votre fournisseur Git, puis Next.**

1. Sur la page **Ajouter une branche de référentiel**, procédez comme suit :

   1. Choisissez le nom de votre dépôt dans la liste.

   1. Choisissez le nom de la branche à utiliser.

   1. Sélectionnez **Mon application est un monorepo**

   1. Entrez le chemin d'accès à votre application dans votre monorepo, par exemple,. **apps/app1**

   1. Choisissez **Suivant**.

1. Sur la page des **paramètres de l'application**, vous pouvez utiliser les paramètres par défaut ou personnaliser les paramètres de génération de votre application. Dans la section **Variables d'environnement**, Amplify définit le chemin que vous avez spécifié `AMPLIFY_MONOREPO_APP_ROOT` à l'étape 4d.

1. Choisissez **Suivant**.

1. Sur la page **Révision**, choisissez **Enregistrer et déployer**.

### Définition de la variable d'environnement AMPLIFY\$1MONOREPO\$1APP\$1ROOT pour une application existante
<a name="setting-monorepo-environment-variable-manually"></a>

Utilisez les instructions suivantes pour définir manuellement la variable d'`AMPLIFY_MONOREPO_APP_ROOT`environnement pour une application déjà déployée sur Amplify ou créée à l'aide de. CloudFormation

**Pour définir la variable d'environnement AMPLIFY\$1MONOREPO\$1APP\$1ROOT pour une application existante**

1. Connectez-vous à la console [Amplify AWS Management Console](https://console.aws.amazon.com/amplify/) et ouvrez-la.

1. Choisissez le nom de l'application pour laquelle définir la variable d'environnement.

1. Dans le volet de navigation, choisissez **Hosting**, puis choisissez **Environment variables**.

1. Sur la page **Variables d'environnement**, sélectionnez **Gérer les variables**.

1. Dans la section **Gérer les variables**, procédez comme suit :

   1. Choisissez **Add new (Ajouter nouveau)**.

   1. Pour **Variable**, entrez la clé`AMPLIFY_MONOREPO_APP_ROOT`.

   1. Pour **Value**, entrez le chemin d'accès à l'application, par exemple**apps/app1**.

   1. Pour **Branch**, Amplify applique par défaut la variable d'environnement à toutes les branches.

1. Choisissez **Enregistrer**.

## Configuration des applications Turborepo et pnpm monorepo
<a name="turborepo-pnpm-monorepo-configuration"></a>

Les outils de génération monorepo de Turborepo et pnpm workspace obtiennent des informations de configuration à partir de fichiers. `.npmrc` Lorsque vous déployez une application monorepo créée avec l'un de ces outils, vous devez avoir un `.npmrc` fichier dans le répertoire racine de votre projet.

Dans le `.npmrc` fichier, définissez l'éditeur de liens pour l'installation des packages Node sur`hoisted`. Vous pouvez copier la ligne suivante dans votre fichier.

```
node-linker=hoisted
```

*Pour plus d'informations sur `.npmrc` les fichiers et les paramètres, consultez [pnpm .npmrc](https://pnpm.io/next/npmrc) dans la documentation de pnpm.*

Pnpm n'est pas inclus dans le conteneur de build par défaut d'Amplify. Pour les applications pnpm workspace et Turborepo, vous devez ajouter une commande pour installer pnpm dans la `preBuild` phase des paramètres de compilation de votre application.

L'exemple d'extrait suivant d'une spécification de construction montre une `preBuild` phase avec une commande pour installer pnpm.

```
version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm install -g pnpm
```