Biomeの設定
このガイドでは、Biomeの設定方法を理解するために役立ちます。 Biomeの設定ファイルの構成と、Biomeがどのように設定を解決するかを説明します。 あなたがすでに設定方法について詳しい場合は、利用可能なすべてのオプションの詳細が記載された設定リファレンスを参照してください。
Biomeでは、CLIのオプションか biome.json
または biome.jsonc
の設定ファイルを使って動作をカスタマイズできます。
設定ファイルをそれぞれのプロジェクトに作成することを推奨しています。
これにより、CLIおよびBiomeと連携したエディタにおいてチームのメンバが同じ設定を使うことを保証できます。
設定ファイルで利用可能なオプションの多くはCLIでも利用できます。
設定ファイル
Section titled “設定ファイル”Biomeはツールチェーンであるため、設定は提供されるツールごとに整理されています。
現時点では、Biomeはフォーマッタ、リンタ、import文のソート(import文の整理とも呼ばれます)の3つのツールを提供しています。
これらのツールはデフォルトですべて有効になっています。
<tool>.enabled
フィールドによっていくつかを無効にできます:
{ "$schema": "https://biomejs.dev/schemas/2.0.0-beta/schema.json", "formatter": { "enabled": false }, "linter": { "enabled": false }, "assist": { "enabled": false }}
2つ以上の言語に適用されるオプションは対応するツールのフィールドの中に配置されています。
言語に固有のツールのオプションは <language>.<tool>
の下に配置されています。
特定の言語について一般のオプションを上書きすることもできます。
また、言語によってツールを有効または有効にすることもできます。
以下の例では、一般のオプション formatter.indentStyle
と formatter.lineWidth
をすべての言語に設定しています。
加えて、javascript.formatter
の中ではJavaScript固有のオプション quoteStyle
を設定し、formatter.lineWidth
を上書きしています。
JSONファイルについてはフォーマッタを無効にしました。
{ "formatter": { "indentStyle": "space", // デフォルトは `tab` "lineWidth": 100 // デフォルトは `80` }, "javascript": { "formatter": { "quoteStyle": "single", // デフォルトは `double` "lineWidth": 120 // `formatter.lineWidth` を上書き } }, "json": { "formatter": { "enabled": false } }}
設定ファイルの解決
Section titled “設定ファイルの解決”Biomeは最も近い設定ファイルを見つけるために自動探索を利用します。
作業ディレクトリとその親ディレクトリから biome.json
または biome.jsonc
ファイルを見つけます。
いずれの設定も見つからない場合は、Biomeのデフォルトを適用します。
biome.json
と biome.jsonc
の両方が同じフォルダにある場合は、biome.json
を優先します。
以下は例です:
ディレクトリapp
ディレクトリbackend
- biome.json
- package.json
ディレクトリfrontend
- biome.json
ディレクトリlegacy
- package.json
ディレクトリnew
- package.json
app/backend/package.json
で実行されたBiomeのコマンドはapp/backend/biome.json
の設定ファイルを使いますapp/frontend/legacy/package.json
またはapp/frontend/new/package.json
で実行されたBiomeのコマンドはapp/frontend/biome.json
の設定ファイルを使います
設定ファイルの共有
Section titled “設定ファイルの共有”extends
フィールドは設定を複数のファイルに分割することを可能にします。
この方法により、異なるプロジェクトやフォルダとの間で共通の設定を共有できます。
以下は common.json
設定ファイルを継承した設定を行う方法を示した例です:
{ "extends": ["./common.json"]}
extends
に定義されたエントリは biome.json
ファイルの定義されたパスから解決されます。
記載された順に処理され、後に記載されたファイルの設定がその前の設定を上書きします。
Biomeは node_modules/
ディレクトリから設定ファイルを解決できます。
従って、パッケージから設定ファイルをエクスポートして、複数のプロジェクトでそれをインポートできます。
そのようにするためには、まず “共有された” Biomeの設定を作成する必要があります。
パッケージ @org/shared-configs
から設定ファイルを指定子 @org/shared-configs/biome
で共有することを考えましょう。
このパッケージの package.json
に exports
エントリを作成する必要があります:
{ "name": "@org/shared-configs", "type": "module", "exports": { "./biome": "./biome.json" }}
@org/shared-configs
がプロジェクトに正しくインストールされていることを確認し、biome.json
を以下の例のように更新します:
{ "extends": ["@org/shared-configs/biome"]}
Biomeは @org/shared-configs/
を作業ディレクトリから 解決 しようとします。
作業ディレクトリは:
- CLIを利用している場合、スクリプトを実行するディレクトリです。
一般的にこれは
package.json
ファイルの場所と同じです - LSPを利用している場合、プロジェクトのルートディレクトリです
解決アルゴリズムの詳細な情報については、Node.jsのドキュメントを参照してください。
ファイルを無視する
Section titled “ファイルを無視する”Biomeが処理するファイルまたはディレクトリを制御する最初の方法は、それらをCLIで列挙することです。
以下のコマンドでは、 file1.js
および src
ディレクトリ内のすべてのファイルのみをフォーマットします。
ディレクトリは再帰的に探索されます。
biome format file1.js src/
Biomeの設定ファイルはどのファイルが処理されるかを調整するのに利用できます。
include
で処理するファイルを明示的に列挙し、ignore
を使用して処理しないファイルを列挙できます。
include
と ignore
は src/**/*.js
などのglobパターンを受け入れます。
どのglob文法がサポートされているかについては関連するセクションを参照してください。
include
は常に ignore
よりも先に適用されます。
これにより、一部のファイルを含めたり、含めたファイルの一部を無視したりできます。
Biomeは、すべてのツールに適用されるグローバルな files.include
および files.ignore
フィールドを提供します。
<tool>.include
および <tool>.ignore
によって、ツールレベルでファイルを含めたり無視したりすることもできます。
これらはグローバルな files.include
および files.ignore
を上書きしないことに注意してください。
files.include
および files.ignore
は、ツールの include
および ignore
よりも先に適用されます。
次のような設定を考えます:
{ "files": { "include": ["src/**/*.js", "test/**/*.js"], "ignore": ["**/*.min.js"] }, "linter": { "ignore": ["test"] }}
そして、以下のコマンドを実行します:
biome format test/
このコマンドは、test
ディレクトリにおいて .js
拡張子で終わり .min.js
拡張子で終わらないファイルをフォーマットします。
ディレクトリがCLIで列挙されていないため、src
内のファイルはフォーマットされません。
次のコマンドを実行すると、test
ディレクトリはリンタに対して明示的に無視されているため、ファイルはリントされません。
biome lint test/
Biomeは、作業ディレクトリから相対的にglobを解決します。 作業ディレクトリは通常、CLIコマンドを実行するディレクトリです。 つまり、設定ファイルがコマンドを実行するのとは別のディレクトリに配置されている場合は、特に注意する必要があります。 エディタ(LSP)の場合、作業ディレクトリはプロジェクトのルートディレクトリです。
2つのディレクトリ backend/
と frontend/
と、先ほど紹介したBiomeの設定ファイルを含むプロジェクトを考えてみましょう。
frontend/
ディレクトリ内では、package.json
がBiomeのフォーマッタを実行する format
スクリプトを指定します。
ディレクトリbackend
- …
- biome.json
ディレクトリfrontend
- package.json
ディレクトリsrc
- …
ディレクトリtest
- …
{ "name": "frontend-project", "scripts": { "format": "biome format --write ./" }}
frontend/package.json
からスクリプト format
を実行すると、そのスクリプトにおける作業ディレクトリは frontend/
になります。
src/**/*.js
と test/**/*.js
のglobは、frontend/
を “ベース” ディレクトリとします。
従って、frontend/src/
と frontend/test/
のファイルのみがフォーマットされます。
{ "files": { "include": ["src/**/*.js", "src/**/*.ts"], "ignore": ["test"] }, "formatter": { "indentStyle": "space" }}
既知のファイル
Section titled “既知のファイル”拡張子ではなくファイルの名前に基づいて特別に扱われる、いくつかの既知のファイルが存在します。 現在は既知のファイルはJSONライクなファイルのみですが、新たなパーサをサポートした場合はリストを拡張して他の種類も含める可能性があります。
以下のファイルは JSON
ファイルとして、オプション json.parser.allowComments
と json.parser.allowTrailingCommas
を false
にした状態でパースされます。
.all-contributorsrc
.arcconfig
.auto-changelog
.bowerrc
.c8rc
.htmlhintrc
.imgbotconfig
.jslintrc
.nycrc
.tern-config
.tern-project
.vuerc
.watchmanconfig
mcmod.info
以下のファイルは JSON
ファイルとして、オプション json.parser.allowComments
を true
に、json.parser.allowTrailingCommas
を false
にした状態でパースされます。
これは、これらのファイルを使用するツールがコメントの削除のみを行うためです。
.ember-cli
.eslintrc.json
.jscsrc
.jshintrc
tslint.json
turbo.json
以下のファイルは JSON
ファイルとして、オプション json.parser.allowComments
と json.parser.allowTrailingCommas
を true
にした状態でパースされます。
これは、これらのファイルを使用するツールがそのような設定を受け入れるようになっているためです。
.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
tsconfig.json
typedoc.json
typescript.json
Glob文法の説明
Section titled “Glob文法の説明”globパターンはファイル名の集合を指定します。 Biomeは次のglobをサポートしています:
*
は0個以上の文字にマッチします。パス区切り文字/
にはマッチしません。**
はディレクトリとファイルに対して再帰的にマッチします。 このシーケンスは単一のパスコンポーネントでなければなりません。 したがって、**a
とb**
はどちらも無効であり、エラーになります。 連続する*
文字が2つ以上続くシーケンスも無効です。[...]
は括弧内の任意の文字にマッチします。 Unicodeの順序による文字の範囲も指定できます。 例えば、[0-9]
は0から9までの任意の文字を指定します。[!...]
は[...]
の否定です。つまり、括弧内に含まれない任意の文字に一致します。
いくつかの例です:
dist/**
は、distディレクトリと、その中のすべてのファイルにマッチします。**/test/**
は、場所に関係なく、test
という名前のディレクトリの下にあるすべてのファイルにマッチします。例:dist/test
、src/test
。**/*.js
は、すべてのディレクトリ内の拡張子.js
で終わるすべてのファイルにマッチします。
Biomeが利用するglobライブラリは、すべてのglobが **/
接頭辞を持つものとして扱います。
つまり、src/**/*.js
と **/src/**/*.js
は同一として扱われます。
これらは src/file.js
と test/src/file.js
の両方にマッチします。