

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.

# Edición de la especificación de compilación
<a name="edit-build-settings"></a>

Puede personalizar la configuración de compilación de una aplicación al editar la especificación de compilación (buildspec) en la consola de Amplify. La configuración de compilación se aplica a todas las ramificaciones de la aplicación, excepto a las ramificaciones que tienen un archivo `amplify.yml` guardado en el repositorio de Git.

**Edición de la configuración de compilación en la consola de Amplify**

1. Inicia sesión en la consola de [Amplify Consola de administración de AWS](https://console.aws.amazon.com/amplify/) y ábrela.

1. Elija la aplicación cuya configuración de compilación quiera modificar.

1. En el panel de navegación, elija **Alojamiento** y, a continuación, **Configuración de compilación**.

1. En la página **Configuración de compilación**, en la sección **Configuración de compilación de la aplicación**, elija **Editar**.

1. En la ventana **Editar especificación de compilación**, introduzca sus actualizaciones.

1. Seleccione **Save**.

Puede usar los ejemplos que se describen en los siguientes temas para actualizar la configuración de compilación de escenarios específicos.

**Topics**
+ [Configuración de compilación específica de ramificación con scripting](#branch-specific-build-settings)
+ [Configurar un comando para navegar a una subcarpeta](#navigating-to-a-subfolder)
+ [Implementación del backend con el frontend de una aplicación de Gen 1](#frontend-with-backend)
+ [Configuración de la carpeta de salida](#setting-the-output-folder)
+ [Instalación de paquetes como parte de una compilación](#installing-packages-as-part-of-your-build)
+ [Uso de un registro npm privado](#using-a-private-npm-registry)
+ [Instalación de paquetes de SO](#installing-os-packages)
+ [Configuración del almacenamiento clave-valor para todas las compilaciones](#key-value-storage-for-every-build)
+ [Omitir la compilación de una confirmación](#skip-build-for-a-commit)
+ [Desactivar las compilaciones automáticas en cada confirmación](#disable-automatic-builds)
+ [Configuración de la compilación e implementación de frontend basada en diferencias](#enable-diff-deploy)
+ [Configuración de compilaciones de backend basadas en diferencias para una aplicación de Gen 1](#enable-diff-backend)

## Configuración de compilación específica de ramificación con scripting
<a name="branch-specific-build-settings"></a>

Puede utilizar scripts del intérprete de comandos Bash para establecer la configuración de compilación específica de ramificación. Por ejemplo, el siguiente script usa la variable de entorno del sistema *\$1 AWS\$1BRANCH* para ejecutar un conjunto de comandos si el nombre de la rama es *main* y un conjunto de comandos diferente si el nombre de la rama es *dev*.

```
frontend:
  phases:
    build:
      commands:
        - if [ "${AWS_BRANCH}" = "main" ]; then echo "main branch"; fi
        - if [ "${AWS_BRANCH}" = "dev" ]; then echo "dev branch"; fi
```

## Configurar un comando para navegar a una subcarpeta
<a name="navigating-to-a-subfolder"></a>

Para monorepos, los usuarios quieren poder utilizar `cd` en una carpeta para ejecutar la compilación. Después de ejecutar el comando `cd`, se aplica a todas las etapas de la compilación para que no sea necesario repetir el comando en fases independientes.

```
version: 1
env:
  variables:
    key: value
frontend:
  phases:
    preBuild:
      commands:
        - cd react-app
        - npm ci
    build:
      commands:
        - npm run build
```

## Implementación del backend con el frontend de una aplicación de Gen 1
<a name="frontend-with-backend"></a>

**nota**  
Esta sección se aplica únicamente a las aplicaciones de Amplify Gen 1. Se crea un backend de Gen 1 con Amplify Studio y la interfaz de la línea de comandos (CLI) de Amplify.

El comando `amplifyPush` es un script auxiliar que le ayuda con las implementaciones del backend. La configuración de compilación siguiente determina automáticamente el entorno de backend correcto que se va a implementar para la ramificación actual.

```
version: 1
env:
  variables:
    key: value
backend:
  phases:
    build:
      commands:
        - amplifyPush --simple
```

## Configuración de la carpeta de salida
<a name="setting-the-output-folder"></a>

La siguiente configuración de compilación establece el directorio de salida en la carpeta pública.

```
frontend:
  phases:
    commands:
      build:
        - yarn run build
  artifacts:
    baseDirectory: public
```

## Instalación de paquetes como parte de una compilación
<a name="installing-packages-as-part-of-your-build"></a>

Puede utilizar los comandos `npm` o `yarn` para instalar paquetes durante la compilación.

```
frontend:
  phases:
    build:
      commands:
        - npm install -g <package>
        - <package> deploy
        - yarn run build
  artifacts:
    baseDirectory: public
```

## Uso de un registro npm privado
<a name="using-a-private-npm-registry"></a>

Puede añadir referencias a un registro privado en la configuración de compilación o añadirlo como variable de entorno.

```
build:
  phases:
    preBuild:
      commands:
        - npm config set <key> <value>
        - npm config set registry https://registry.npmjs.org
        - npm config set always-auth true
        - npm config set email hello@amplifyapp.com
        - yarn install
```

## Instalación de paquetes de SO
<a name="installing-os-packages"></a>

La AL2023 imagen de Amplify ejecuta el código con un nombre de usuario sin privilegios. `amplify` Amplify otorga a este usuario privilegios para ejecutar comandos del sistema operativo mediante el comando `sudo` de Linux. Si desea instalar paquetes de sistema operativo para las dependencias que faltan, puede utilizar comandos como `yum` y `rpm` mediante `sudo`.

En la siguiente sección de compilación de ejemplos se muestra la sintaxis para instalar un paquete de sistema operativo mediante el comando `sudo`.

```
build:
  phases:
    preBuild:
      commands:
        - sudo yum install -y <package>
```

## Configuración del almacenamiento clave-valor para todas las compilaciones
<a name="key-value-storage-for-every-build"></a>

El `envCache` ofrece almacenamiento de un valor clave en el momento de la compilación. Los valores almacenados en `envCache` solo se pueden modificar durante una compilación y se pueden volver a utilizar durante la siguiente compilación. Mediante `envCache`, podemos almacenar información en el entorno implementado y hacer que esté disponible para el contenedor de compilación en compilaciones sucesivas. A diferencia de los valores almacenados en `envCache`, los cambios en las variables de entorno durante una compilación no se almacenan de forma persistente en futuras compilaciones.

Ejemplo de uso:

```
envCache --set <key> <value>
envCache --get <key>
```

## Omitir la compilación de una confirmación
<a name="skip-build-for-a-commit"></a>

Para omitir la compilación automática de una confirmación concreta, incluya el texto **[skip-cd]** al final del mensaje de confirmación.

## Desactivar las compilaciones automáticas en cada confirmación
<a name="disable-automatic-builds"></a>

Puede configurar Amplify para desactivar las compilaciones automáticas en todas las confirmaciones de código. Para la configuración, elija **Configuración de la aplicación** y **Configuración de ramificación** y, a continuación, desplácese hasta la sección **Ramificaciones** con todas las ramificaciones conectadas. Elija una ramificación y, a continuación, elija **Acciones** y **Deshabilitar compilación automática**. Las nuevas confirmaciones en esa ramificación dejarán de iniciar una nueva compilación.

## Configuración de la compilación e implementación de frontend basada en diferencias
<a name="enable-diff-deploy"></a>

Puede configurar Amplify para utilizar compilaciones de frontend basadas en diferencias. Si está habilitada, Amplify intentará ejecutar una diferencia en su `appRoot`, o en la carpeta `/src/` de forma predeterminada al inicio de cada compilación. Si Amplify no encuentra ninguna diferencia, omite la compilación de frontend, prueba (si se configura) e implementa los pasos y no actualiza la aplicación alojada.

**Para configurar la compilación e implementación de frontend basada en diferencias**

1. Inicia sesión en la consola de [Amplify Consola de administración de AWS](https://console.aws.amazon.com/amplify/) y ábrela.

1. Elija la aplicación para la que desea configurar la creación e implementación de frontend basada en diferencias.

1. En el panel de navegación, elija **Alojamiento** y **Variables de entorno**.

1. En la sección **Variables de entorno**, elija **Administrar variables**.

1. El procedimiento de configuración de la variable de entorno varía en función de si se habilita o deshabilita la creación e implementación de frontend basada en diferencias.
   + Para habilitar la creación e implementación de frontend basada en diferencias

     1. En la sección **Administrar variables** de **Variable**, introduzca `AMPLIFY_DIFF_DEPLOY`.

     1. En **Valor**, introduzca `true`.
   + Para deshabilitar la creación e implementación de frontend basada en diferencias

     1. Lleve a cabo una de las siguientes acciones:
       + En la sección **Administrar variables**, busque `AMPLIFY_DIFF_DEPLOY`. En **Valor**, introduzca `false`.
       + Elimine la variable de entorno `AMPLIFY_DIFF_DEPLOY`.

1. Elija **Guardar**.

Opcionalmente, puede configurar la variable de entorno `AMPLIFY_DIFF_DEPLOY_ROOT` para anular la ruta predeterminada con una ruta relativa a la raíz de su repositorio, como `dist`.

## Configuración de compilaciones de backend basadas en diferencias para una aplicación de Gen 1
<a name="enable-diff-backend"></a>

**nota**  
Esta sección se aplica únicamente a las aplicaciones de Amplify Gen 1. Se crea un backend de Gen 1 con Amplify Studio y la interfaz de la línea de comandos (CLI) de Amplify.

Puede configurar Amplify Hosting para utilizar compilaciones de backend basadas en diferencias mediante la variable de entorno `AMPLIFY_DIFF_BACKEND`. Al habilitar las compilaciones de backend basadas en diferencias, al comienzo de cada compilación, Amplify intenta ejecutar una diferencia en la carpeta `amplify` de su repositorio. Si Amplify no encuentra ninguna diferencia, omitirá el paso de compilación del backend y no actualizará los recursos del backend. Si su proyecto no tiene la carpeta `amplify` en el repositorio, Amplify ignorará el valor `AMPLIFY_DIFF_BACKEND` de la variable de entorno.

Si actualmente tiene comandos personalizados especificados en la configuración de compilación de la fase de backend, las compilaciones de backend condicionales no funcionarán. Si desea que esos comandos personalizados se ejecuten, deberá moverlos a la fase de frontend de la configuración de compilación en el archivo `amplify.yml` de su aplicación.

**Para configurar compilaciones de backend basadas en diferencias**

1. Inicia sesión en la consola de [Amplify Consola de administración de AWS](https://console.aws.amazon.com/amplify/) y ábrela.

1. Elija la aplicación para la que desea configurar las compilaciones de backend basadas en diferencias.

1. En el panel de navegación, elija **Alojamiento** y **Variables de entorno**.

1. En la sección **Variables de entorno**, elija **Administrar variables**.

1. El procedimiento de configuración de la variable de entorno varía en función de si se habilitan o deshabilitan las compilaciones de backend basadas en diferencias.
   + Para habilitar las compilaciones de backend basadas en diferencias

     1. En la sección **Administrar variables** de **Variable**, introduzca `AMPLIFY_DIFF_BACKEND`.

     1. En **Valor**, introduzca `true`.
   + Para deshabilitar las compilaciones de backend basadas en diferencias

     1. Lleve a cabo una de las siguientes acciones:
       + En la sección **Administrar variables**, busque `AMPLIFY_DIFF_BACKEND`. En **Valor**, introduzca `false`.
       + Elimine la variable de entorno `AMPLIFY_DIFF_BACKEND`.

1. Seleccione **Save**.