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, 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ü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
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amplify-Konsole
. -
Wählen Sie in der oberen rechten Ecke Neue App erstellen.
-
Wählen Sie auf der Seite „Mit Amplify erstellen“ Ihren Git-Anbieter und dann Weiter aus.
-
Gehen Sie auf der Seite Repository-Zweig hinzufügen wie folgt vor:
-
Wählen Sie den Namen Ihres Repositorys aus der Liste aus.
-
Wählen Sie den Namen der Verzweigung aus, die Sie verwenden möchten.
-
Wählen Sie Meine App ist ein Monorepo
-
Geben Sie den Pfad zu Ihrer App in Ihrem Monorepo ein, zum Beispiel.
apps/app1
-
Wählen Sie Weiter aus.
-
-
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. -
Wählen Sie Weiter aus.
-
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
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amplify-Konsole
. -
Wählen Sie den Namen der App, für die Sie die Umgebungsvariable festlegen möchten.
-
Wählen Sie im Navigationsbereich Hosting und dann Umgebungsvariablen aus.
-
Wählen Sie auf der Seite Umgebungsvariablen die Option Variablen verwalten aus.
-
Gehen Sie im Abschnitt Variablen verwalten wie folgt vor:
-
Wählen Sie Add new (Neuen hinzufügen) aus.
-
Geben Sie für Variable den Schlüssel ein
AMPLIFY_MONOREPO_APP_ROOT
. -
Geben Sie unter Value beispielsweise den Pfad zur App ein
apps/app1
. -
Für Branch wendet Amplify standardmäßig die Umgebungsvariable auf alle Branches an.
-
-
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
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