Feat: Simplifica o processo de inicialização do ambiente de desenvolvimento #142
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Qual o problema que esta mudança resolve?
Atualmente, o processo para iniciar o ambiente de desenvolvimento é manual e propenso a erros. O desenvolvedor precisa executar dois comandos em terminais separados e na ordem correta:
docker compose mongodb up -d (ou pnpm docker:compose:only:mongo) para iniciar o banco de dados.
pnpm dev para iniciar o frontend e o backend (via Nx).
Essa abordagem pode levar a erros se o banco de dados não for iniciado antes das aplicações, além de ser um passo extra que prejudica a produtividade e a Developer Experience (DX).
Qual a solução proposta?
Para resolver isso, o script dev no arquivo package.json foi modificado para automatizar a inicialização do contêiner do MongoDB junto com as aplicações.
Com a alteração, ao executar pnpm dev:
O contêiner do banco de dados é iniciado primeiro.
Em seguida, as aplicações (frontend e backend via Nx) são executadas.
Isso unifica todo o processo em um único comando, tornando o setup mais rápido, simples e à prova de erros para todos os sistemas operacionais (Linux, Windows, macOS).
Alternativas consideradas
Foi considerado manter os comandos separados e apenas melhorar a documentação, mas a automação do processo através do package.json se mostrou uma solução muito mais robusta e alinhada com as boas práticas de DX.
Contexto da Implementação (package.json)
A mudança foi implementada no bloco scripts do package.json da seguinte forma:
"dev": "pnpm docker:compose:only:mongo && nx run-many -t serve --projects=server,devmx --configuration=development",Isso garante que a experiência de desenvolvimento seja mais fluida para todos os contribuidores do projeto.