Impostazioni di build Monorepo - AWS Amplify Ospitare

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

Impostazioni di build Monorepo

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.

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 è presente un amplify.yml file, le sue impostazioni sostituiscono tutte le impostazioni di build salvate nella console Amplify.

Sintassi YAML delle specifiche di build di Monorepo

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, vedereImpostazione della variabile di ambiente AMPLIFY_MONOREPO_APP_ROOT.

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-appelenco. angular-app applications La appRoot chiave di ogni app indica che l'app si trova nella cartella apps principale del repository.

L'buildpathattributo è impostato per / eseguire e creare l'app dalla radice del progetto monorepo.

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*

Impostazione della variabile di ambiente AMPLIFY_MONOREPO_APP_ROOT

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 denominataapps, che contiene, app1app2, 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

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 AWS Management Console e apri la console Amplify.

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

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

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

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

    2. Scegli il nome del ramo da usare.

    3. Seleziona La mia app è un monorepo

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

    5. Seleziona Successivo.

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

  6. Seleziona Successivo.

  7. Nella pagina Revisione, scegli Salva e distribuisci.

Impostazione della variabile di ambiente AMPLIFY_MONOREPO_APP_ROOT per un'app esistente

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 AWS Management Console e apri la console Amplify.

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

  3. Nel riquadro di navigazione, scegli Hosting, quindi scegli Variabili di ambiente.

  4. Nella pagina Variabili di ambiente, scegli Gestisci variabili.

  5. Nella sezione Gestisci variabili, procedi come segue:

    1. Seleziona Add new (Aggiungi nuovo).

    2. Per Variabile, inserisci la chiaveAMPLIFY_MONOREPO_APP_ROOT.

    3. Per Value, inserisci il percorso dell'app, ad esempioapps/app1.

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

  6. Selezionare Salva.

Configurazione delle app Turborepo e pnpm monorepo

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