Modificar la configuración de compilación de monorepo - AWS Amplify Hospedaje

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Modificar la configuración de compilación de monorepo

Cuando se almacenan varios proyectos o microservicios en un único repositorio, se denomina monorepo. Puede utilizar Amplify Hosting para implementar aplicaciones en un monorepo sin crear múltiples configuraciones de compilación o configuraciones de ramificación.

Amplify admite aplicaciones en monorepos genéricos, así como aplicaciones en monorepos creadas con npm workspace, pnpm workspace, Yarn workspace, Nx y Turborepo. Al implementar su aplicación, Amplify detecta automáticamente la herramienta de compilación de monorepo que está utilizando. Amplify aplica automáticamente la configuración de compilación a las aplicaciones en un npm workspace, Yarn workspace o Nx. Las aplicaciones Turborepo y pnpm requieren una configuración adicional. Para obtener más información, consulte Configuración de aplicaciones Turborepo y pnpm monorepo.

Puede guardar la configuración de compilación de un monorepo en la consola de Amplify o descargar el archivo de amplify.yml y añadirlo a la raíz de su repositorio. Amplify aplica la configuración guardada en la consola a todas tus ramificaciones, a menos que encuentre un archivo de amplify.yml en su repositorio. Cuando hay un archivo de amplify.yml, su configuración anula cualquier configuración de compilación guardada en la consola de Amplify.

Referencia de sintaxis de la especificación de compilación de Monorepo YAML

La YAML sintaxis de una especificación de compilación de monorepo es diferente de la YAML sintaxis de un repositorio que contiene una sola aplicación. En el caso de un monorepo, se declara cada proyecto en una lista de aplicaciones. Debe proporcionar la siguiente clave appRoot adicional para cada aplicación que declare en la especificación de compilación de monorepo:

appRoot

La raíz, dentro del repositorio, en la que se inicia la aplicación. Esta clave debe existir y tener el mismo valor que la variable de entorno AMPLIFY_MONOREPO_APP_ROOT. Para obtener instrucciones sobre cómo configurar esta variable de entorno, consulteEstablecer la variable de ROOT entorno AMPLIFY MONOREPO APP _ _ _.

En el siguiente ejemplo de especificación de compilación de monorepo se muestra cómo declarar varias aplicaciones de Amplify en el mismo repositorio. Las dos aplicaciones, react-app y angular-app, se declaran en la lista applications. La clave appRoot de cada aplicación indica que la aplicación se encuentra en la carpeta raíz apps del repositorio.

El atributo buildpath se configura en / para ejecutar y compilar la aplicación desde la raíz del proyecto monorepo. El baseDirectory atributo es la ruta relativa de. 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*

Una aplicación que utilice el siguiente ejemplo de especificación de compilación se compilará en la raíz del proyecto y los artefactos de compilación se ubicarán en. /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

Establecer la variable de ROOT entorno AMPLIFY MONOREPO APP _ _ _

Al implementar una aplicación almacenada en un monorepo, la variable de entorno AMPLIFY_MONOREPO_APP_ROOT de la aplicación debe tener el mismo valor que la ruta de la raíz de la aplicación, en relación con la raíz de su repositorio. Por ejemplo, un monorepo denominado ExampleMonorepo con una carpeta raíz denominada apps, que contenga app1, app2 y app3, tiene la siguiente estructura de directorios:

ExampleMonorepo apps app1 app2 app3

En este ejemplo, el valor de la variable de entorno AMPLIFY_MONOREPO_APP_ROOT para app1 es apps/app1.

Al implementar una aplicación monorepo mediante la consola de Amplify, la consola establece automáticamente la variable de entorno AMPLIFY_MONOREPO_APP_ROOT con el valor que especifique para la ruta a la raíz de la aplicación. Sin embargo, si su aplicación monorepo ya existe en Amplify o se implementa utilizando AWS CloudFormation, debe configurar manualmente la variable de entorno en la sección Variables de AMPLIFY_MONOREPO_APP_ROOT entorno de la consola de Amplify.

Configurar la variable de entorno AMPLIFY _ MONOREPO _ APP _ automáticamente durante la ROOT implementación

Las siguientes instrucciones muestran cómo implementar una aplicación monorepo con la consola de Amplify. Amplify establece automáticamente la variable de entorno AMPLIFY_MONOREPO_APP_ROOT mediante la carpeta raíz de la aplicación que especifique en la consola.

Para implementar una aplicación monorepo con la consola de Amplify
  1. Inicia sesión en la consola de Amplify AWS Management Console y ábrela.

  2. Elija Crear nueva aplicación en la esquina superior derecha.

  3. En la página Comenzar a crear con Amplify, seleccione el proveedor de Git y, a continuación, elija Siguiente.

  4. En la página Añadir ramificación de repositorio, haga lo siguiente:

    1. Elija el nombre del repositorio de la lista.

    2. Elija el nombre de la ramificación que desea usar.

    3. Seleccione Mi aplicación es un monorepo

    4. Introduzca la ruta a su aplicación en su monorepo, por ejemplo, apps/app1.

    5. Elija Next (Siguiente).

  5. En la página de Configuración de la aplicación, puede utilizar la configuración predeterminada o personalizar la configuración de compilación de su aplicación. En la sección Variables de entorno, Amplify establece AMPLIFY_MONOREPO_APP_ROOT en la ruta que se especificó en el paso 4d.

  6. Elija Next (Siguiente).

  7. En la página Revisar, elija Guardar e implementar.

Configurar la variable de ROOT entorno AMPLIFY MONOREPO APP _ _ _ para una aplicación existente

Siga las siguientes instrucciones para configurar manualmente la variable de AMPLIFY_MONOREPO_APP_ROOT entorno de una aplicación que ya esté implementada en Amplify o que se haya creado con ella. CloudFormation

Para configurar la variable de ROOT entorno AMPLIFY MONOREPO APP _ _ _ para una aplicación existente
  1. Inicia sesión en la consola de Amplify AWS Management Console y ábrela.

  2. Elija el nombre de la aplicación para la que desea establecer la variable de entorno.

  3. En el panel de navegación, elija Alojamiento y, a continuación, Variables de entorno.

  4. En Variables de entorno, elija Administrar variables.

  5. En la sección Gestionar variables, haga lo siguiente:

    1. Elija Add new (Añadir nuevo).

    2. En Variable, introduzca la clave AMPLIFY_MONOREPO_APP_ROOT.

    3. En Valor, introduzca la ruta a la aplicación, por ejemplo apps/app1.

    4. En Ramificación, Amplify aplica de forma predeterminada la variable de entorno a todas las ramificaciones.

  6. Elija Guardar.

Configuración de aplicaciones Turborepo y pnpm monorepo

Las herramientas de compilación Turborepo y pnpm workspace monorepo obtienen información de configuración de los archivos .npmrc. Al implementar una aplicación monorepo creada con una de estas herramientas, debe tener un archivo .npmrc en el directorio raíz del proyecto.

En el archivo .npmrc, configure el enlazador para la instalación de los paquetes de Node en hoisted. Puede copiar la siguiente línea en su archivo.

node-linker=hoisted

Para obtener más información sobre los archivos .npmrc y la configuración, consulte pnpm .npmrc en la documentación de pnpm.

Pnpm no se incluye en el contenedor de compilación predeterminado de Amplify. En el caso de las aplicaciones pnpm workspace y Turborepo, debe añadir un comando para instalar pnpm en la fase preBuild de configuración de compilación de la aplicación.

El siguiente extracto de ejemplo de una especificación de compilación muestra una fase preBuild con un comando para instalar pnpm.

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