

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione delle impostazioni di build monorepo
<a name="monorepo-configuration"></a>

Quando si archiviano più progetti o microservizi in un unico repository, si parla di monorepo. Puoi utilizzare Amplify Hosting per distribuire applicazioni in un monorepo senza creare più configurazioni di build o configurazioni di filiale.

Amplify supporta app in monorepo generici e app in monorepo create utilizzando npm workspace, pnpm workspace, Yarn workspace, Nx e Turborepo. Quando distribuisci la tua app, Amplify rileva automaticamente lo strumento di creazione monorepo che stai utilizzando. Amplify applica automaticamente le impostazioni di build per le app in un'area di lavoro npm, un'area di lavoro Yarn o Nx. Le app Turborepo e pnpm richiedono una configurazione aggiuntiva. Per ulteriori informazioni, consulta [Configurazione delle app Turborepo e pnpm monorepo](#turborepo-pnpm-monorepo-configuration).

Puoi salvare le impostazioni di build per un monorepo nella console Amplify oppure puoi scaricare il `amplify.yml` file e aggiungerlo alla radice del tuo repository. Amplify applica le impostazioni salvate nella console a tutte le tue filiali a meno che non trovi `amplify.yml` un file nel tuo repository. Quando un `amplify.yml` file è presente, le sue impostazioni sostituiscono tutte le impostazioni di build salvate nella console Amplify.

## Riferimento alla sintassi YAML delle specifiche di build di Monorepo
<a name="monorepo-yml-syntax"></a>

La sintassi YAML per una specifica di build monorepo è diversa dalla sintassi YAML per un repository che contiene una singola applicazione. Per un monorepo, si dichiara ogni progetto in un elenco di applicazioni. È necessario fornire la seguente `appRoot` chiave aggiuntiva per ogni applicazione dichiarata nelle specifiche di build del monorepo:

**AppRoot**  
La radice, all'interno del repository, da cui viene avviata l'applicazione. Questa chiave deve esistere e avere lo stesso valore della variabile di `AMPLIFY_MONOREPO_APP_ROOT` ambiente. Per istruzioni sull'impostazione di questa variabile di ambiente, vedere[Impostazione della variabile di ambiente AMPLIFY\_MONOREPO\_APP\_ROOT](#setting-monorepo-environment-variable).

Il seguente esempio di specifica di build monorepo dimostra come dichiarare più applicazioni Amplify nello stesso repository. Le due app, e sono dichiarate nell'`react-app`elenco. `angular-app` `applications` La `appRoot` chiave di ogni app indica che l'app si trova nella cartella `apps` principale del repository.

L'`buildpath`attributo è impostato per `/` eseguire e creare l'app dalla radice del progetto monorepo. L'`baseDirectory`attributo è il percorso relativo di. `buildpath`

### Sintassi YAML delle specifiche di build di 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*
```

Un'app che utilizza la seguente specifica di build di esempio verrà creata nella radice del progetto e gli elementi di compilazione si troveranno in. `/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
```

## Impostazione della variabile di ambiente AMPLIFY\_MONOREPO\_APP\_ROOT
<a name="setting-monorepo-environment-variable"></a>

Quando distribuisci un'app archiviata in un monorepo, la variabile di `AMPLIFY_MONOREPO_APP_ROOT` ambiente dell'app deve avere lo stesso valore del percorso della radice dell'app, rispetto alla radice del tuo repository. Ad esempio, un monorepo denominato `ExampleMonorepo` con una cartella principale denominata`apps`, che contiene, `app1``app2`, e `app3` ha la seguente struttura di directory:

```
ExampleMonorepo
  apps
    app1
    app2
    app3
```

In questo esempio, il valore della variabile di `AMPLIFY_MONOREPO_APP_ROOT` ambiente for `app1` è. `apps/app1`

Quando distribuisci un'app monorepo utilizzando la console Amplify, la console imposta automaticamente la variabile di `AMPLIFY_MONOREPO_APP_ROOT` ambiente utilizzando il valore specificato per il percorso alla radice dell'app. Tuttavia, se l'app monorepo esiste già in Amplify o viene distribuita utilizzando AWS CloudFormation, è necessario impostare manualmente la variabile di ambiente nella sezione **Variabili** di `AMPLIFY_MONOREPO_APP_ROOT` ambiente della console Amplify.

### Impostazione automatica della variabile di ambiente AMPLIFY\_MONOREPO\_APP\_ROOT durante la distribuzione
<a name="setting-monorepo-environmnet-variable-automatically"></a>

Le seguenti istruzioni mostrano come implementare un'app monorepo con la console Amplify. Amplify imposta automaticamente `AMPLIFY_MONOREPO_APP_ROOT` la variabile di ambiente utilizzando la cartella principale dell'app specificata nella console.

**Per distribuire un'app monorepo con la console Amplify**

1. Accedi Console di gestione AWS e apri la console [Amplify.](https://console.aws.amazon.com/amplify/)

1. Scegli **Crea nuova app** nell'angolo in alto a destra.

1. **Nella pagina **Inizia a creare con Amplify**, scegli il tuo provider Git, quindi scegli Avanti.**

1. Nella pagina **Aggiungi ramo del repository**, procedi come segue:

   1. Scegli il nome del tuo repository dall'elenco.

   1. Scegli il nome del ramo da usare.

   1. Seleziona **La mia app è un monorepo**

   1. Inserisci il percorso della tua app nel tuo monorepo, ad esempio,. **apps/app1**

   1. Scegli **Next (Successivo)**.

1. Nella pagina **delle impostazioni dell'app**, puoi utilizzare le impostazioni predefinite o personalizzare le impostazioni di build per la tua app. Nella sezione **Variabili d'ambiente**, Amplify `AMPLIFY_MONOREPO_APP_ROOT` imposta il percorso specificato nel passaggio 4d.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Revisione**, scegli **Salva** e distribuisci.

### Impostazione della variabile di ambiente AMPLIFY\_MONOREPO\_APP\_ROOT per un'app esistente
<a name="setting-monorepo-environment-variable-manually"></a>

Utilizza le seguenti istruzioni per impostare manualmente la variabile di `AMPLIFY_MONOREPO_APP_ROOT` ambiente per un'app che è già distribuita su Amplify o che è stata creata utilizzando. CloudFormation

**Per impostare la variabile di ambiente AMPLIFY\_MONOREPO\_APP\_ROOT per un'app esistente**

1. Accedi Console di gestione AWS e apri la console [Amplify.](https://console.aws.amazon.com/amplify/)

1. Scegli il nome dell'app per cui impostare la variabile di ambiente.

1. Nel riquadro di navigazione, scegli **Hosting**, quindi scegli **Variabili di ambiente**.

1. Nella pagina **Variabili di ambiente**, scegli **Gestisci variabili**.

1. Nella sezione **Gestisci variabili**, procedi come segue:

   1. Seleziona **Add new (Aggiungi nuovo)**.

   1. Per **Variabile**, inserisci la chiave`AMPLIFY_MONOREPO_APP_ROOT`.

   1. Per **Value**, inserisci il percorso dell'app, ad esempio**apps/app1**.

   1. Per **Branch**, per impostazione predefinita, Amplify applica la variabile di ambiente a tutti i rami.

1. Scegli **Save** (Salva).

## Configurazione delle app Turborepo e pnpm monorepo
<a name="turborepo-pnpm-monorepo-configuration"></a>

Gli strumenti di compilazione Turborepo e pnpm workspace monorepo ottengono informazioni di configurazione dai file. `.npmrc` Quando distribuisci un'app monorepo creata con uno di questi strumenti, devi avere un file nella directory principale del progetto. `.npmrc`

Nel `.npmrc` file, imposta il linker per l'installazione dei pacchetti Node su. `hoisted` Puoi copiare la riga seguente nel tuo file.

```
node-linker=hoisted
```

*Per ulteriori informazioni su `.npmrc` file e impostazioni, consulta [pnpm .npmrc](https://pnpm.io/next/npmrc) nella documentazione di pnpm.*

Pnpm non è incluso nel contenitore di build predefinito di Amplify. Per le app pnpm workspace e Turborepo, devi aggiungere un comando per installare pnpm nella fase delle impostazioni di compilazione dell'app. `preBuild`

L'esempio seguente, estratto da una specifica di build, mostra una fase con un comando per installare pnpm. `preBuild`

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