Pular para o conteúdo

Usando o Biome em projetos grandes

O Biome disponibiliza algumas ferramentas que podem ajudar você a utilizá-lo em projetos grandes, como ambientes de trabalho com múltiplos projetos ou em projetos monorepos.

Usando múltiplos arquivos de configuração

Section titled Usando múltiplos arquivos de configuração

Quando você utiliza o Biome - seja com a CLI ou com o LSP - ele busca o arquivo de configuração mais próximo usando o diretório de trabalho atual.

Se o Biome não encontrar o arquivo de configuração no diretório, ele começa a procurar nos diretórios pai até encontrar um arquivo de configuração.

Você pode aproveitar essa funcionalidade para aplicar diferentes configuração baseado no projeto/pasta.

Vamos supor que nós temos um projeto que contém um aplicativo backend e um novo aplicativo frontend.

app
├── backend
│ ├── biome.json
│ └── package.json
└── frontend
├── biome.json
├── legacy-app
│ └── package.json
└── new-app
└── package.json

Isso signifca que quando você executa um script do arquivo app/backend/package.json, o Biome vai usar o arquivo de configuração app/backend/biome.json.

Quando você executa um script do arquivo app/frontend/legacy-app/package.json ou app/frontend/new-app/package.json, o Biome vai usar o arquivo de configuração app/frontend/biome.json.

Compartilhando o arquivo de configuração

Section titled Compartilhando o arquivo de configuração

É possível usar a opção de configuração extends para dividir opções entre vários arquivos.

Vamos supor que temos esses requisitos:

  • O projeto legacy-app deve ser formatado usando espaços;
  • Os projetos backend e new-app devem ser formatados usando tabulações;
  • Todos os projetos devem ser formatados com uma largura de linha de 120 caracteres;
  • O projeto backend precisa de algumas verficações adicionais;

Começamos criando um novo arquivo de configuração em app/biome.json, e colocamos nele as opções compartilhadas:

app/biome.json
{
"formatter": {
"enabled": true,
"lineWidth": 120
}
}

Agora, vamos mover app/frontend/biome.json para app/frontend/legacy-app/, pois é lá que precisamos usar uma formatação diferente.

app/frontend/legacy-app/biome.json
{
"formatter": {
"indentStyle": "space"
}
}

Em seguida, falamos para o Biome herdar todas as opções do arquivo principal app/biome.json, utilizando a propriedade extends:

app/frontend/legacy-app/biome.json
{
"extends": ["../../biome.json"],
"formatter": {
"indentStyle": "space"
}
}

Vamos para o arquivo app/backend/biome.json, onde precisamos habilitar o linting:

app/backend/biome.json
{
"extends": ["../biome.json"],
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
}
}