

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Konfiguration der Monorepo-Build-Einstellungen
<a name="monorepo-configuration"></a>

Wenn Sie mehrere Projekte oder Microservices in einem einzigen Repository speichern, wird dies als Monorepo bezeichnet. Sie können Amplify Hosting verwenden, um Anwendungen in einem Monorepo bereitzustellen, ohne mehrere Build-Konfigurationen oder Branch-Konfigurationen zu erstellen.

Amplify unterstützt Apps in generischen Monorepos sowie Apps in Monorepos, die mit npm workspace, pnpm workspace, Yarn workspace, Nx und Turborepo erstellt wurden. Wenn Sie Ihre App bereitstellen, erkennt Amplify automatisch das von Ihnen verwendete Monorepo-Build-Tool. Amplify wendet automatisch Build-Einstellungen für Apps in einem NPM-Workspace, Yarn-Workspace oder Nx an. Turborepo- und pnpm-Apps erfordern eine zusätzliche Konfiguration. Weitere Informationen finden Sie unter [Konfiguration der Turborepo- und pnpm-Monorepo-Apps](#turborepo-pnpm-monorepo-configuration).

Sie können die Build-Einstellungen für ein Monorepo in der Amplify-Konsole speichern oder die `amplify.yml` Datei herunterladen und zum Stammverzeichnis Ihres Repositorys hinzufügen. Amplify wendet die in der Konsole gespeicherten Einstellungen auf alle Ihre Branches an, es sei denn, es findet eine `amplify.yml` Datei in Ihrem Repository. Wenn eine `amplify.yml` Datei vorhanden ist, überschreiben ihre Einstellungen alle in der Amplify-Konsole gespeicherten Build-Einstellungen.

## YAML-Syntaxreferenz für die Monorepo-Build-Spezifikation
<a name="monorepo-yml-syntax"></a>

Die YAML-Syntax für eine Monorepo-Build-Spezifikation unterscheidet sich von der YAML-Syntax für ein Repository, das eine einzelne Anwendung enthält. Bei einem Monorepo deklarieren Sie jedes Projekt in einer Liste von Anwendungen. Sie müssen für jede Anwendung, die Sie in Ihrer Monorepo-Build-Spezifikation deklarieren, den folgenden zusätzlichen `appRoot` Schlüssel angeben:

**AppRoot**  
Das Stammverzeichnis innerhalb des Repositorys, in dem die Anwendung gestartet wird. Dieser Schlüssel muss vorhanden sein und denselben Wert wie die `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariable haben. Anweisungen zum Einstellen dieser Umgebungsvariablen finden Sie unter[Einstellung der Umgebungsvariablen AMPLIFY\$1MONOREPO\$1APP\$1ROOT](#setting-monorepo-environment-variable).

Das folgende Beispiel für eine Monorepo-Build-Spezifikation zeigt, wie mehrere Amplify-Anwendungen im selben Repo deklariert werden. Die beiden Apps`react-app`, und `angular-app` sind in der Liste deklariert. `applications` Der `appRoot` Schlüssel für jede App gibt an, dass sich die App im `apps` Stammordner des Repositorys befindet.

Das `buildpath` Attribut ist so eingestellt, dass `/` die App vom Monorepo-Projektstamm aus ausgeführt und erstellt wird. Das `baseDirectory` Attribut ist der relative Pfad von. `buildpath`

### YAML-Syntax für die Monorepo-Build-Spezifikation
<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*
```

Eine App, die die folgende Beispiel-Build-Spezifikation verwendet, wird unter dem Projektstamm erstellt und die Build-Artefakte befinden sich unter. `/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
```

## Einstellung der Umgebungsvariablen AMPLIFY\$1MONOREPO\$1APP\$1ROOT
<a name="setting-monorepo-environment-variable"></a>

Wenn Sie eine in einem Monorepo gespeicherte App bereitstellen, muss die `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariable der App denselben Wert haben wie der Pfad des App-Stammverzeichnisses, relativ zum Stammverzeichnis Ihres Repositorys. Zum Beispiel ein Monorepo `ExampleMonorepo` mit dem Namen eines Stammordners namens`apps`, der, `app1``app2`, enthält und die folgende Verzeichnisstruktur `app3` hat:

```
ExampleMonorepo
  apps
    app1
    app2
    app3
```

In diesem Beispiel ist der Wert der `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariablen für`app1`. `apps/app1`

Wenn Sie eine Monorepo-App mit der Amplify-Konsole bereitstellen, legt die Konsole die `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariable automatisch anhand des Werts fest, den Sie für den Pfad zum Stammverzeichnis der App angeben. **Wenn Ihre Monorepo-App jedoch bereits in Amplify vorhanden ist oder mit Amplify bereitgestellt wird AWS CloudFormation, müssen Sie die Umgebungsvariable im Abschnitt `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariablen in der Amplify-Konsole manuell festlegen.**

### Automatisches Einstellen der Umgebungsvariablen AMPLIFY\$1MONOREPO\$1APP\$1ROOT während der Bereitstellung
<a name="setting-monorepo-environmnet-variable-automatically"></a>

Die folgenden Anweisungen zeigen, wie Sie eine Monorepo-App mit der Amplify-Konsole bereitstellen. Amplify legt die `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariable automatisch mithilfe des Stammordners der App fest, den Sie in der Konsole angeben.

**Um eine Monorepo-App mit der Amplify-Konsole bereitzustellen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [Amplify-Konsole](https://console.aws.amazon.com/amplify/).

1. Wählen Sie in der oberen rechten Ecke **Neue App erstellen**.

1. Wählen Sie auf **der Seite „Mit Amplify** erstellen“ Ihren Git-Anbieter und dann **Weiter** aus.

1. Gehen Sie auf der Seite **Repository-Zweig hinzufügen** wie folgt vor:

   1. Wählen Sie den Namen Ihres Repositorys aus der Liste aus.

   1. Wählen Sie den Namen des Branches, den Sie verwenden möchten.

   1. Wählen Sie **Meine App ist ein Monorepo**

   1. Geben Sie den Pfad zu Ihrer App in Ihrem Monorepo ein, zum Beispiel. **apps/app1**

   1. Wählen Sie **Weiter** aus.

1. Auf der Seite mit den **App-Einstellungen** können Sie die Standardeinstellungen verwenden oder die Build-Einstellungen für Ihre App anpassen. Im Abschnitt **Umgebungsvariablen** setzt Amplify `AMPLIFY_MONOREPO_APP_ROOT` auf den Pfad, den Sie in Schritt 4d angegeben haben.

1. Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **„Überprüfen**“ die Option **Speichern und bereitstellen**.

### Einstellung der Umgebungsvariablen AMPLIFY\$1MONOREPO\$1APP\$1ROOT für eine bestehende App
<a name="setting-monorepo-environment-variable-manually"></a>

Verwenden Sie die folgenden Anweisungen, um die `AMPLIFY_MONOREPO_APP_ROOT` Umgebungsvariable für eine App manuell festzulegen, die bereits auf Amplify bereitgestellt wurde oder mit CloudFormation der erstellt wurde.

**Um die Umgebungsvariable AMPLIFY\$1MONOREPO\$1APP\$1ROOT für eine bestehende App festzulegen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [Amplify-Konsole](https://console.aws.amazon.com/amplify/).

1. Wählen Sie den Namen der App, für die Sie die Umgebungsvariable festlegen möchten.

1. Wählen Sie im Navigationsbereich **Hosting** und dann **Umgebungsvariablen** aus.

1. Wählen Sie auf der Seite **Umgebungsvariablen** die Option **Variablen verwalten** aus.

1. Gehen **Sie im Abschnitt Variablen verwalten** wie folgt vor:

   1. Wählen Sie **Add new (Neuen hinzufügen)** aus.

   1. Geben Sie für **Variable** den Schlüssel ein`AMPLIFY_MONOREPO_APP_ROOT`.

   1. Geben Sie unter **Value** beispielsweise den Pfad zur App ein**apps/app1**.

   1. Für **Branch** wendet Amplify standardmäßig die Umgebungsvariable auf alle Branches an.

1. Wählen Sie **Speichern**.

## Konfiguration der Turborepo- und pnpm-Monorepo-Apps
<a name="turborepo-pnpm-monorepo-configuration"></a>

Die Monorepo-Build-Tools Turborepo und pnpm Workspace rufen Konfigurationsinformationen aus Dateien ab. `.npmrc` Wenn Sie eine Monorepo-App bereitstellen, die mit einem dieser Tools erstellt wurde, benötigen Sie eine `.npmrc` Datei in Ihrem Projekt-Stammverzeichnis.

Stellen Sie in der `.npmrc` Datei den Linker für die Installation von Node-Paketen auf ein. `hoisted` Sie können die folgende Zeile in Ihre Datei kopieren.

```
node-linker=hoisted
```

*Weitere Informationen zu `.npmrc` Dateien und Einstellungen finden Sie unter [pnpm .npmrc](https://pnpm.io/next/npmrc) in der pnpm-Dokumentation.*

Pnpm ist nicht im Standard-Build-Container von Amplify enthalten. Für pnpm workspace- und Turborepo-Apps müssen Sie in der `preBuild` Phase der Build-Einstellungen Ihrer App einen Befehl zur Installation von pnpm hinzufügen.

Der folgende Beispielauszug aus einer Build-Spezifikation zeigt eine `preBuild` Phase mit einem Befehl zur Installation von pnpm.

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