Como lidar com dependências, incompatibilidades e ferramentas - Amazon CodeCatalyst

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

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.

Adicionar dependências

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

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

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

Depois de uma atualização do Yarn, 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

Os esquemas usam Yarn para ferramentas. Usar npm 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

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

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.