Utilizando derry para gerenciar scripts em seu projeto Flutter

Rodrigo Bastos
3 min readOct 29, 2021

--

Uma das coisas que sinto falta enquanto estou desenvolvendo em Flutter é algum local onde eu possa declarar os scripts do meu projeto. Algo parecido com a seção “scripts” de um arquivo como o package.json tão conhecido em projetos Javascript.

Você até pode declarar alguns scripts na tag “scripts” do seu pubspec.yaml, mas nada muito sofisticado pode ser feito ali.

Para preencher esta lacuna no gerenciamento de scripts do projeto, foi criada uma excelente opção chamada derry. O derry é um gerenciador de scripts robusto que administra todos os scripts do seu projeto. Com ele é possível configurar a execução de todos os scripts necessários durante o ciclo de vida do projeto, desde de scripts de linting, geração de código, build e deploy.

Vou mostrar adiante como configurar o derry em seu projeto e algumas funcionalidades excelentes que o derry nos proporciona.

Primeiramente, você precisa instala o derry. Para instalá-lo, basta executar o seguinte comando:

pub global activate derry

Após instalado você já pode rodar o derry normalmente no seu terminal. Dê um derry -h para confirmar que tudo deu certo!

Após instalado, você precisa adicionar um arquivo chamado derry.yaml na raiz do seu projeto, além disso você precisa informar ao seu projeto que este arquivo vai ser quem vai declarar os possíveis comandos que serão utilizados. Tudo isto pode ser feito adicionando a seção scripts: derry.yaml no seu arquivo pubspec.yaml.

Após feito isto, basta você começar a declarar os comandos desejados dentro do seu arquivo derry.yaml.

Comecemos simples, primeiro vamos criar um comando para rodar nosso projeto. Para isso basta adicionar:

Feito isso, basta agora rodarmos no nosso terminal e o comando flutter run será executado.

derry runFlutter

A partir desse ponto podemos fazer algo mais interessante.

Imagine o seguinte cenário, digamos que precisemos configurar scripts para rodar nosso projeto em diversas plataformas e para diversos ambientes diferentes (dev, homolog e prod). É a partir da resolução de cenários como este que percebemos o tanto que o derry pode nos ajudar.

Vamos atacar primeiro o problema de configurar para multiplas plataformas. Bem, conseguimos resolver facilmente isto com a seguinte configuração.

Após feito isso, basta utilizarmos derry linux, para rodar no linux, derry mobile para mobile e derry web, para web. Muito simples não é mesmo? Mas a melhor parte ainda está por vir.

O derry nos permite cascatear scripts, e com isso posso configurar algo deste tipo:

Com isto, facilmente conseguimos configurar várias plataformas em vários ambientes diferentes. Consigo por exemplo rodar o flutter mobile, em ambiente de dev.

derry run mobile dev

O comando acima faz exatamente isso. O derry é inteligente o suficiente para entender esta sintaxe e procurar o comando correto para ser executado. Neste cenário você pode por exemplo configurar suas várias de ambiente para cada ambiente específico e o derry com um comando te ajudará a rodar isso.

Além destes usos já mostrados, utilizo derry tambem em outro contexto nos meus projetos. Outro exemplo interessante de uso do derry é na parte de geração de código. Posso criar a seguinte configuração:

Desta forma consigo facilmente rodar o build runner com a configuração desejada (build ou watch).

derry run codegen watch

Podemos dar uma melhorada na nossa configuração anterior. O derry nos permite guardar comandos em variáveis. Então podemos melhorar nosso script anterior da seguinte forma:

Guardamos o valor do comando de execução do build_runner numa variavel e referenciamos esta variavel posteriormente.

Para finalizar, e não menos importante, o derry nos permite a partir de uma entrada de script, executar vários comandos. Isto é muito útil em passos como execução de testes ou deploy de aplicações.

O exemplo que trago é da execução dos testes, com criação do reporte de coverage. Podemos fazer isto facilmente com o derry com a seguinte configuração:

E para rodar:

derry tests

Então por hoje é isso pessoal, o derry me ajudou e ainda me ajuda muito na configuração dos meus projetos. Ele veio para preencher esta lacuna que o Flutter na minha opinião não é tão bom ainda. Espero que tenham gostado e espero que também usem o derry :).

O exemplo completo de arquivo derry criado pode ser visto abaixo:

Até a próxima!

--

--