Przejdź do głównej zawartości

Konfiguracja Biome

Ten przewodnik pomoże Ci zrozumieć, jak skonfigurować Biome. Wyjaśnia strukturę pliku konfiguracyjnego Biome i jak Biome rozwiązuje swoją konfigurację. Jeśli już znasz konfigurację, możesz zajrzeć do odniesienia do konfiguracji, które szczegółowo opisuje wszystkie dostępne opcje.

Biome pozwala dostosować swoje zachowanie za pomocą opcji CLI lub pliku konfiguracyjnego o nazwie biome.json lub biome.jsonc. Zalecamy utworzenie pliku konfiguracyjnego dla każdego projektu. Zapewnia to, że każdy członek zespołu ma tę samą konfigurację w CLI i w każdym edytorze, który umożliwia integrację Biome. Wiele opcji dostępnych w pliku konfiguracyjnym jest również dostępnych w CLI.

Plik konfiguracyjny Biome nazywa się biome.json lub biome.jsonc. Zazwyczaj jest umieszczany w katalogu głównym projektu, obok pliku package.json projektu.

Ponieważ Biome jest zestawem narzędzi, jego konfiguracja jest zorganizowana wokół narzędzi, które dostarcza. W tej chwili Biome dostarcza trzy narzędzia: formater, linter i assist. Wszystkie te narzędzia są domyślnie włączone. Możesz wyłączyć jedno lub kilka z nich używając pola <tool>.enabled:

biome.json
{
"$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
"formatter": {
"enabled": false
},
"linter": {
"enabled": false
},
"assist": {
"enabled": false
}
}

Opcje, które dotyczą więcej niż jednego języka, są umieszczane w odpowiednim polu narzędzia. Opcje specyficzne dla języka narzędzia są umieszczane pod polem <language>.<tool>. Pozwala to również na nadpisywanie ogólnych opcji dla danego języka. Możesz również włączać lub wyłączać narzędzie w zależności od języka. W poniższym przykładzie konfigurujemy ogólne opcje formatter.indentStyle i formatter.lineWidth dla wszystkich języków. Ponadto ustawiamy opcję specyficzną dla JavaScript quoteStyle w javascript.formatter i nadpisujemy formatter.lineWidth. Wyłączyliśmy formater dla plików JSON.

biome.jsonc
{
"formatter": {
"indentStyle": "space", // default is `tab`
"lineWidth": 100 // default is `80`
},
"javascript": {
"formatter": {
"quoteStyle": "single", // default is `double`
"lineWidth": 120 // override `formatter.lineWidth`
}
},
"json": {
"formatter": {
"enabled": false
}
}
}

Biome używa automatycznego wykrywania, aby znaleźć najbliższy plik konfiguracyjny. Szuka w katalogu roboczym i jego folderach nadrzędnych, aż znajdzie plik biome.json lub biome.jsonc. Jeśli nie znajdzie konfiguracji, używana jest domyślna konfiguracja Biome. Jeśli zarówno biome.json, jak i biome.jsonc są obecne w tym samym folderze, używany jest biome.json.

Oto przykład:

  • Folderapp/
    • Folderbackend/
      • biome.json
      • package.json
    • Folderfrontend/
      • Folderlegacy/
        • package.json
      • Foldernew/
        • package.json
      • biome.json
  • Polecenia Biome uruchamiane w app/backend/package.json będą używać pliku konfiguracyjnego app/backend/biome.json;
  • Polecenia Biome uruchamiane w app/frontend/legacy/package.json i app/frontend/new/package.json będą używać pliku konfiguracyjnego app/frontend/biome.json;

Możesz kontrolować pliki/foldery do przetworzenia przy użyciu różnych strategii, czy to CLI, konfiguracji czy VCS.

Pierwszym sposobem kontrolowania, które pliki i foldery są przetwarzane przez Biome, jest wymienienie ich w CLI. W poniższym poleceniu formatujemy tylko file1.js i wszystkie pliki w folderze src, ponieważ foldery są przeszukiwane rekurencyjnie.

Okno terminala
biome format file1.js src/

Plik konfiguracyjny Biome może być używany do doprecyzowania, które pliki są przetwarzane. Możesz jawnie wymienić pliki do przetworzenia używając pola files.includes. files.includes akceptuje wzorce glob takie jak src/**/*.js. Negowane wzorce zaczynające się od ! mogą być używane do wykluczenia plików.

Ścieżki i globs wewnątrz pliku konfiguracyjnego Biome są rozwiązywane względem folderu, w którym znajduje się plik konfiguracyjny. Wyjątkiem jest sytuacja, gdy plik konfiguracyjny jest rozszerzany przez inny.

files.includes dotyczy wszystkich narzędzi Biome, co oznacza, że pliki określone tutaj są przetwarzane przez linter, formater i assist, chyba że określono inaczej. Dla poszczególnych narzędzi możesz dalej precyzować pasujące pliki używając <tool>.includes.

Weźmy następującą konfigurację, w której chcemy dołączyć tylko pliki JavaScript (.js), które są w folderze src/, folderze test/ i ignorować pliki, które mają .min.js w swojej nazwie:

biome.json
{
"files": {
"includes": ["src/**/*.js", "test/**/*.js", "!**/*.min.js"]
},
"linter": {
"includes": ["**", "!test/**"]
}
}

I uruchom następujące polecenie:

Okno terminala
biome format test/

Polecenie sformatuje pliki, które kończą się rozszerzeniem .js i nie kończą się rozszerzeniem .min.js z folderu test/.

Pliki w src/ nie są formatowane, ponieważ folder nie jest wymieniony w CLI.

Jeśli uruchomimy następujące polecenie, żadne pliki nie są lintowane, ponieważ pliki w folderze test/ są jawnie ignorowane dla lintera.

Okno terminala
biome lint test/

Jeśli chcesz wykluczyć pliki i foldery z przetwarzania przez Biome, możesz użyć konfiguracji files.includes i użyć negowanych wzorców, używając wiodącego !.

Przed wymienieniem negowanych globów, muszą być poprzedzone wzorcem **.

W poniższym przykładzie mówimy Biome, aby dołączyć wszystkie pliki, z wyjątkiem tych w dowolnym folderze dist/, a także tych, które kończą się na .generated.js:

biome.json
{
"files": {
"includes": [
"**",
"!**/dist",
"!**/*.generated.js"
]
}
}

Możesz ignorować pliki ignorowane przez Twój VCS.

Oto niektóre dobrze znane pliki, które specjalnie traktujemy na podstawie ich nazw plików, a nie ich rozszerzeń. Obecnie dobrze znane pliki to tylko pliki podobne do JSON, ale możemy poszerzyć listę o inne typy, gdy będziemy wspierać nowe parsery.

Następujące pliki są parsowane jako pliki JSON z obiema opcjami json.parser.allowComments i json.parser.allowTrailingCommas ustawionymi na false.

  • .all-contributorsrc
  • .arcconfig
  • .auto-changelog
  • .bowerrc
  • .c8rc
  • .htmlhintrc
  • .imgbotconfig
  • .jslintrc
  • .nycrc
  • .tern-config
  • .tern-project
  • .vuerc
  • .watchmanconfig
  • mcmod.info

Następujące pliki są parsowane jako pliki JSON z opcją json.parser.allowComments ustawioną na true, ale json.parser.allowTrailingCommas ustawioną na false. Dzieje się tak, ponieważ narzędzia konsumujące te pliki mogą tylko usuwać komentarze.

  • .ember-cli
  • .eslintrc.json
  • .jscsrc
  • .jshintrc
  • tslint.json
  • turbo.json

Następujące pliki są parsowane jako pliki JSON z opcjami json.parser.allowComments i json.parser.allowTrailingCommas ustawionymi na true. Dzieje się tak, ponieważ narzędzia konsumujące te pliki są zaprojektowane tak, aby uwzględniać takie ustawienia.

  • .babelrc
  • .babelrc.json
  • .devcontainer.json
  • .hintrc
  • .hintrc.json
  • .swcrc
  • api-documenter.json
  • api-extractor.json
  • babel.config.json
  • deno.json
  • devcontainer.json
  • dprint.json
  • jsconfig.json
  • jsr.json
  • language-configuration.json
  • nx.json
  • project.json
  • tsconfig.json
  • typedoc.json
  • typescript.json