Konfiguration der Monorepo-Build-Einstellungen - AWS Amplify Hosten

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

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.

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

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 unterEinstellung der Umgebungsvariablen AMPLIFY_MONOREPO_APP_ROOT.

Das folgende Beispiel für eine Monorepo-Build-Spezifikation zeigt, wie mehrere Amplify-Anwendungen im selben Repo deklariert werden. Die beiden Appsreact-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

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_MONOREPO_APP_ROOT

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 namensapps, der, app1app2, 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ürapp1. 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_MONOREPO_APP_ROOT während der Bereitstellung

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 Management Console und öffnen Sie die Amplify-Konsole.

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

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

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

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

    2. Wählen Sie den Namen der Verzweigung aus, die Sie verwenden möchten.

    3. Wählen Sie Meine App ist ein Monorepo

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

    5. Wählen Sie Weiter aus.

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

  6. Wählen Sie Weiter aus.

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

Einstellung der Umgebungsvariablen AMPLIFY_MONOREPO_APP_ROOT für eine bestehende App

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_MONOREPO_APP_ROOT für eine bestehende App festzulegen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amplify-Konsole.

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

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

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

  5. Gehen Sie im Abschnitt Variablen verwalten wie folgt vor:

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

    2. Geben Sie für Variable den Schlüssel einAMPLIFY_MONOREPO_APP_ROOT.

    3. Geben Sie unter Value beispielsweise den Pfad zur App einapps/app1.

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

  6. Wählen Sie Speichern.

Konfiguration der Turborepo- und pnpm-Monorepo-Apps

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