

A Amazon não CodeCatalyst está mais aberta a novos clientes. Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar do CodeCatalyst](migration.md).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como lidar com dependências, incompatibilidades e ferramentas
<a name="dependencies-tooling-bp"></a>

O gerenciamento incorreto de dependências pode levar a falhas de criação e problemas de runtime para aqueles que usam seus esquemas personalizados. Ferramentas e componentes desatualizados podem impedir que os usuários do esquema acessem os recursos e as correções de erros mais recentes. Você pode gerenciar dependências, lidar com incompatibilidades de dependências e atualizar ferramentas e componentes para garantir que todas as dependências usem as mesmas versões de componentes e que os componentes sejam sincronizados.

**Topics**
+ [Adicionar dependências](#add-dependencies)
+ [Como lidar com incompatibilidades de tipos de dependência](#handle-dependency-mismatches)
+ [Uso de yarn e npm](#use-yarn-npm)
+ [Atualização de ferramentas e componentes](#upgrade-tooling-components)

## Adicionar dependências
<a name="add-dependencies"></a>

Como autor do esquema, você talvez precise adicionar pacotes ao seu esquema, como `@amazon-codecatalyst/blueprint-component.environments`. Você precisa atualizar o arquivo `projen.ts` com esse pacote e, depois, gerar novamente a configuração do seu projeto com o [Projen](https://github.com/projen/projen). O Projen atua como modelo de projeto para cada base de código do esquema, o que permite enviar atualizações de ferramentas compatíveis com versões anteriores alterando a forma como o modelo renderiza os arquivos de configuração. O arquivo `package.json` é um arquivo parcialmente pertencente ao modelo do Projen. O Projen reconhece as versões de dependência incluídas no arquivo package.json, mas outras opções precisam se originar do modelo.

**Para adicionar uma dependência e atualizar um arquivo `projenrc.ts`**

1. No arquivo `projen.ts`, navegue até a seção deps.

1. Adicione a dependência que deseja usar no esquema.

1. Use o comando a seguir para gerar novamente a configuração do projeto:

   ```
   yarn projen && yarn
   ```

## Como lidar com incompatibilidades de tipos de dependência
<a name="handle-dependency-mismatches"></a>

Depois de uma atualização do [Yarn](https://yarnpkg.com/), você pode receber o seguinte erro em relação a um parâmetro do repositório:

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

O erro ocorre devido a uma incompatibilidade de dependências que acontece quando um componente depende de uma versão mais recente de outro componente, mas o componente dependente é fixado em uma versão mais antiga. O erro pode ser corrigido fazendo com que todos os seus componentes dependam da mesma versão para que a versão seja sincronizada entre eles. É melhor manter todos os pacotes fornecidos pelo esquema na mesma versão mais recente (`0.0.x`), a menos que você tenha certeza de como está lidando com as versões. O exemplo a seguir mostra como o arquivo `package.json` pode ser configurado para que todas as dependências dependam da mesma versão:

```
...
"@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": "*",
```

Depois de configurar as versões para todas as dependências, use o seguinte comando:

```
yarn install
```

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

Os esquemas usam [Yarn](https://yarnpkg.com/) para ferramentas. Usar [npm](https://www.npmjs.com/) e Yarn causará problemas de ferramentas porque a forma como as árvores de dependência são resolvidas por cada uma é diferente. Para evitar esses problemas, é melhor usar somente o Yarn.

Se você instalou dependências acidentalmente usando o npm, poderá remover o arquivo `package-lock.json` gerado e garantir que seu arquivo `.projenrc.ts` esteja atualizado com as dependências necessárias. Você gera novamente a configuração do projeto com o Projen.

Use o seguinte para gerar novamente a partir do modelo:

```
yarn projen
```

Depois de verificar se o arquivo .projenrc.ts está atualizado com as dependências necessárias, use o seguinte comando:

```
yarn
```

## Atualização de ferramentas e componentes
<a name="upgrade-tooling-components"></a>

Ocasionalmente, você talvez queira atualizar suas ferramentas e componentes para trazer novos recursos disponíveis. É recomendável manter todos os componentes na mesma versão, a menos que você tenha certeza de como está lidando com as versões. As versões são sincronizadas entre os componentes, portanto, as mesmas versões para todos os componentes garantem a dependência adequada entre eles.

### Usar o monorepo do espaço de trabalho do Yarn
<a name="upgrade-tooling-components"></a>

Use o seguinte comando para atualizar utilitários e componentes da raiz do repositório de um esquema personalizado:

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

Use o comando a seguir se não estiver usando um monorepo:

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

Outras opções que você pode usar para atualizar ferramentas e componentes:
+ Use a visualização npm `@caws-blueprint-component/<some-component>` para ter a versão mais recente.
+ Aumente manualmente para a versão mais recente definindo a versão no arquivo package.json e usando o seguinte comando: `yarn`. Todos os componentes e utilitários devem ter a mesma versão.