

Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cómo migrar desde CodeCatalyst](migration.md).

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.

# Tratamiento de dependencias, discrepancias y herramientas
<a name="dependencies-tooling-bp"></a>

Una administración incorrecta de las dependencias puede provocar errores de compilación y problemas de tiempo de ejecución para quienes utilicen sus esquemas personalizados. Las herramientas y los componentes desactualizados pueden impedir que los usuarios de los esquemas accedan a las características y correcciones de errores más recientes. Puede administrar las dependencias, tratar las discrepancias de las dependencias y actualizar las herramientas y los componentes para garantizar que todas las dependencias utilicen las mismas versiones de los componentes y que los componentes estén sincronizados.

**Topics**
+ [Incorporación de dependencias](#add-dependencies)
+ [Tratamiento de las discrepancias en los tipos de dependencias](#handle-dependency-mismatches)
+ [Uso de yarn y npm](#use-yarn-npm)
+ [Actualización de herramientas y componentes](#upgrade-tooling-components)

## Incorporación de dependencias
<a name="add-dependencies"></a>

Como autor de un esquema, puede que necesite añadir paquetes al esquema, como `@amazon-codecatalyst/blueprint-component.environments`. Debe actualizar el archivo `projen.ts` con ese paquete y, a continuación, volver a generar la configuración del proyecto con [Projen](https://github.com/projen/projen). Projen actúa como el modelo de proyecto para el código base de cada esquema, lo que permite actualizar las herramientas compatibles con versiones anteriores cambiando la forma en que el modelo representa los archivos de configuración. El archivo `package.json` es un archivo que pertenece parcialmente al modelo de Projen. Projen reconoce las versiones de las dependencias incluidas en el archivo package.json, pero las demás opciones deben provenir del modelo.

**Incorporación de una dependencia y actualización de un archivo `projenrc.ts`**

1. En el archivo `projen.ts`, desplácese hasta la sección deps.

1. Añada la dependencia que desee utilizar en el esquema.

1. Utilice el siguiente comando para volver a generar la configuración del proyecto:

   ```
   yarn projen && yarn
   ```

## Tratamiento de las discrepancias en los tipos de dependencias
<a name="handle-dependency-mismatches"></a>

Tras una actualización de [Yarn](https://yarnpkg.com/), es posible que aparezca el siguiente error relacionado con un parámetro del repositorio:

```
Type 'SourceRepository' is missing the following properties from type 'SourceRepository': synthesisSteps, addSynthesisStep
```

El error se debe a la discrepancia de las dependencias que se produce cuando un componente se basa en una versión más reciente de otro componente, pero el componente está anclado a una versión anterior. El error se puede corregir haciendo que todos los componentes dependan de la misma versión para que la versión se sincronice entre ellos. Es mejor mantener todos los paquetes proporcionados por el esquema en la misma versión más reciente (`0.0.x`), a menos que esté seguro de cómo se administran las versiones. En el siguiente ejemplo se muestra cómo se puede configurar el archivo `package.json` para que todas las dependencias utilicen la misma versión:

```
...
"@caws-blueprint-component/caws-environments": "^0.1.12345",
"@caws-blueprint-component/caws-source-repositories": "^0.1.12345",
"@caws-blueprint-component/caws-workflows": "^0.1.12345",
"@caws-blueprint-component/caws-workspaces": "^0.1.12345",
"@caws-blueprint-util/blueprint-utils": "^0.1.12345",
...
"@caws-blueprint/blueprints.blueprint": "*",
```

Tras configurar las versiones de todas las dependencias, utilice el siguiente comando:

```
yarn install
```

## Uso de yarn y npm
<a name="use-yarn-npm"></a>

Los esquemas usan [Yarn](https://yarnpkg.com/) como herramienta. El uso de [npm](https://www.npmjs.com/) y Yarn provocará problemas con las herramientas porque la forma en que cada uno resuelve los árboles de dependencias es diferente. Para evitar estos problemas, es mejor usar solo Yarn.

Si instaló por error dependencias con npm, puede eliminar el archivo `package-lock.json` generado y asegurarse de que el archivo `.projenrc.ts` esté actualizado con las dependencias que necesita. Puede volver a generar la configuración del proyecto con Projen.

Utilice lo siguiente para volver a generar la configuración a partir del modelo:

```
yarn projen
```

Tras comprobar que el archivo .projenrc.ts está actualizado con las dependencias necesarias, utilice el siguiente comando:

```
yarn
```

## Actualización de herramientas y componentes
<a name="upgrade-tooling-components"></a>

De vez en cuando, es posible que desee actualizar sus herramientas y componentes para incorporar las nuevas características disponibles. Se recomienda mantener todos los componentes en la misma versión, a menos que esté seguro de cómo se tratan las versiones. Las versiones se sincronizan entre los componentes, por lo que las mismas versiones para todos los componentes garantizan una dependencia adecuada entre ellos.

### Uso de monorepo del espacio de trabajo de Yarn
<a name="upgrade-tooling-components"></a>

Use el siguiente comando para actualizar las utilidades y los componentes desde la raíz del repositorio de un esquema personalizado:

```
yarn upgrade @amazon-codecatalyst/*
```

Utilice el siguiente comando si no utiliza un monorepo:

```
yarn upgrade —pattern @amazon-codecatalyst/*
```

Otras opciones que puede utilizar para actualizar las herramientas y los componentes:
+ Utilice npm view `@caws-blueprint-component/<some-component>` para obtener la última versión.
+ Cambie manualmente a la última versión configurando la versión en su archivo package.json y utilizando el siguiente comando:`yarn`. Todos los componentes y utilidades deben tener la misma versión.