大規模プロジェクトでのBiomeの使用方法
Biomeは、モノレポや複数のプロジェクトを含むワークスペースなどの大規模なプロジェクトで、適切に使用するためのツールを提供しています。
複数の設定ファイルの使用
Section titled “複数の設定ファイルの使用”Biomeの機能をCLIやLSPで使用する場合、ツールは現在の作業ディレクトリから最も近い設定ファイルを参照します。
設定ファイルが見つからない場合、Biomeは設定ファイルが見つかるまで、上へ上へとディレクトリを移動します。
この機能を活用して、プロジェクトやディレクトリごとに異なるオプションを適用することができます。
例えば、backend
ディレクトリとfrontend
ディレクトリを含むプロジェクトがあるとします。
ディレクトリapp
ディレクトリbackend
- biome.json
- package.json
ディレクトリfrontend
- biome.json
ディレクトリlegacy-app
- package.json
ディレクトリnew-app
- package.json
この場合、app/backend/package.json
からスクリプトを実行すると、Biomeはapp/backend/biome.json
を設定ファイルとして使用します。
app/frontend/legacy-app/package.json
またはapp/frontend/new-app/package.json
からスクリプトを実行すると、Biomeはapp/frontend/biome.json
を設定ファイルとして使用します。
extends
オプションを使用して、オプションを複数ファイルに分割することができる。
例えば、以下の要件があるとします:
legacy-app
ディレクトリでは、スペースでフォーマットするbackend
ディレクトリとnew-app
ディレクトリでは、タブでフォーマットする- すべてのディレクトリでは、行幅を120でフォーマットする
backend
ディレクトリでは、追加で他のリント設定を行う
まず、app/biome.json
に新しい設定ファイルを作成し、共通オプションの設定を行います:
{ "formatter": { "enabled": true, "lineWidth": 120 }}
ここで、legacy-app
ディレクトリで別のオプションを使用するため、app/frontend/biome.json
をapp/frontend/legacy-app/
に移動します:
{ "formatter": { "indentStyle": "space" }}
次に、extends
プロパティを使って、app/biome.json
のすべてのオプションを継承するように設定を加えます:
{ "extends": ["../../biome.json"], "formatter": { "indentStyle": "space" }}
最後に、app/backend/biome.json
でリンタを有効にします:
{ "extends": ["../biome.json"], "linter": { "enabled": true, "rules": { "recommended": true } }}
モノレポは、複数のライブラリを単一の大きなリポジトリに保存して管理されるリポジトリです。それぞれのライブラリは独立したプロジェクトであり、異なる構成を持つことがあります。
Biomeはネストされた設定ファイルの解決においていくらかの制限があり、モノレポを適切にサポートしていません。関連したIssueを手伝い、フォローしてください。
現在の制限の下でより良い開発者体験を実現するには、モノレポのルートに biome.json
を配置し、overrides
設定を使っていくつかのパッケージでBiomeの動作を変更することを推奨しています。
以下の例では、パッケージ packages/logger
の中ではルール suspecious/noConsoleLog
を無効化しています。
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [{ "include": ["packages/logger/**"], "linter": { "rules": { "suspicious": { "noConsoleLog": "off" } } } }]}