Para criar um monorepo com pnpm, precisaremos criar um arquivo chamado pnpm-workspace.yaml
dentro do nosso repositório.
touch pnpm-workspace.yaml
Dentro do pnpm-workspace.yaml
, vamos definir nossos pacotes. Ele terá uma estrutura semelhante a esta:
packages:
- 'app'
- 'api'
- 'utils'
- 'services'
Agora podemos fazer referência aos nossos pacotes do workspace da seguinte forma:
{
"dependencies": {
"@repo/utils": "workspace:*",
"@repo/services": "workspace:*"
}
}
Você pode encontrar mais detalhes na documentação do pnpm. E como podemos observar, muitos dos maiores frameworks do mercado adotam essa abordagem.
Bônus
Para otimizar nosso fluxo de desenvolvimento, podemos integrar o Turborepo, uma ferramenta que simplifica a execução de scripts em vários packages.json
simultaneamente.