Flutter: Compartilhando dependências em um Flutter Monorepo

Tempo de leitura: 2 minutes

Acredito que muitos projetos monorepo do Dart e do Flutter já estejam usando o Melos. É uma ferramenta útil para o gerenciamento de vários pacotes, e fico feliz em vê-la sendo aprimorada continuamente.

Recurso de dependências compartilhadas

Neste artigo, estou ansioso para destacar o recurso Shared Dependencies que foi introduzido no Melos 3.2.0.

Essencialmente, se você quiser compartilhar uma versão de dependência entre os pacotes em seu monorepo, basta adicionar a dependência ao arquivo melos.yaml, e o comando melos bootstrap garantirá que seus arquivos pubscpec.yaml sejam atualizados de acordo com a versão definida no arquivo melos.yaml. Isso funciona não apenas para dependencies ou dev_dependencies, mas também para a configuração do ambiente.

Mais contexto sobre ele pode ser obtido em sua solicitação de recurso e no PR em que foi implementado.

 

Shared Dependencies na prática

Vamos ver como isso funciona na prática usando o projeto Flame como exemplo.
No momento em que escrevo, vários pacotes do monorepo Flame dependem do meta v1.9.1, e você pode ver a configuração de bootstrap copiada abaixo.

name: Flame
repository: https://github.com/flame-engine/flame

packages:
  - packages/**
  - examples/
  - examples/games/**
  - doc/**

command:
  bootstrap:
    environment:
      sdk: ">=3.0.0 <4.0.0"
    dependencies:
      meta: ^1.9.1
      vector_math: ^2.1.4
    dev_dependencies:
      dartdoc: ^6.3.0
      mocktail: ^1.0.1
      test: any

scripts:
  # Omitted for brevity.

Depois de atualizar a versão do meta para meta: ^1.10.0 no melos.yaml e executar o comando melos bs, obtenho 49 pacotes inicializados, 9 deles que dependem do meta receberam a mesma atualização imediatamente! Isso é muito útil e pode facilitar o gerenciamento de dependências no Dart/Flutter monorepos.

 

Conclusão

Embora seja verdade que o gerenciamento de pacotes no ecossistema Dart/Flutter seja menos maduro em comparação com outras plataformas como .NET, temos a sorte de ter ferramentas como o Melos à nossa disposição que podem simplificar o processo. Ao contribuir ativamente com essas ferramentas, podemos desempenhar um papel importante na melhoria da experiência do desenvolvedor e na promoção de maior satisfação dentro da comunidade.

 

Recursos