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
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.
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 des spécifications YAML de construction de Monorepo
La YAML syntaxe d'une spécification de build monorepo est différente de YAML celle d'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 :
- appRoot
-
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, consultezDéfinition de la variable d'ROOTenvironnement AMPLIFY MONOREPO APP _ _ _.
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 applicationsreact-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 debuildpath
.
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
Définition de la variable d'ROOTenvironnement AMPLIFY MONOREPO APP _ _ _
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
estapps/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'ROOTenvironnement AMPLIFY MONOREPO APP _ _ _ lors du déploiement
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
-
Connectez-vous à la console Amplify AWS Management Console
et ouvrez-la. -
Choisissez Créer une nouvelle application dans le coin supérieur droit.
-
Sur la page Commencer à créer avec Amplify, choisissez votre fournisseur Git, puis Next.
-
Sur la page Ajouter une branche de référentiel, procédez comme suit :
-
Choisissez le nom de votre dépôt dans la liste.
-
Choisissez le nom de la branche à utiliser.
-
Sélectionnez Mon application est un monorepo
-
Entrez le chemin d'accès à votre application dans votre monorepo, par exemple,.
apps/app1
-
Choisissez Suivant.
-
-
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. -
Choisissez Suivant.
-
Sur la page Révision, choisissez Enregistrer et déployer.
Définition de la variable d'ROOTenvironnement AMPLIFY MONOREPO APP _ _ _ pour une application existante
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'ROOTenvironnement AMPLIFY MONOREPO APP _ _ _ pour une application existante
-
Connectez-vous à la console Amplify AWS Management Console
et ouvrez-la. -
Choisissez le nom de l'application pour laquelle définir la variable d'environnement.
-
Dans le volet de navigation, choisissez Hosting, puis choisissez Environment variables.
-
Sur la page Variables d'environnement, sélectionnez Gérer les variables.
-
Dans la section Gérer les variables, procédez comme suit :
-
Choisissez Add new (Ajouter nouveau).
-
Pour Variable, entrez la clé
AMPLIFY_MONOREPO_APP_ROOT
. -
Pour Value, entrez le chemin d'accès à l'application, par exemple
apps/app1
. -
Pour Branch, Amplify applique par défaut la variable d'environnement à toutes les branches.
-
-
Choisissez Save (Enregistrer).
Configuration des applications Turborepo et pnpm monorepo
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 surhoisted
. 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
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