🧬

Monorepo環境でBiomeを使用したときにVSCodeの保存時フォーマットが効かない

2024/09/16に公開

問題

バックエンドはGolang、フロントエンドはTypescript(React)のMonorepo環境でBiomeを導入しました。

project
├── backend
│   └── xxx.go
└── frontend
    ├── biome.json
    └── package.json

BiomeのVSCode拡張機能もインストールし、settings.jsonにも下記の記載をしている状態です。

settings.json
{
  "editor.defaultFormatter": "biomejs.biome",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": [
    "quickfix.biome"
  ]
}

その状態でCLIからのlintやformatは動くのですが、保存時に自動でフォーマットを行う処理が動いてくれません。
厳密にはフォーマット処理は走っているのに、biome.jsonの設定が適用されておらずデフォルトの設定が使われているっぽいです。困りました。

結論

プロジェクトのルートディレクトリにbiome.jsonのシンボリックリンクを作成することで解決しました。
↓こんな感じです

project
├── backend
│   └── xxx.go
├── frontend
│   ├── biome.json
│   └── package.json
└── biome.jsonのシンボリックリンク ←new!

https://biomejs.dev/ja/reference/vscode/#設定の読み込み

Biome公式の記載の通り、BiomeのVSCode拡張機能は、ワークスペースのルートディレクトリからbiome.jsonを読み込もうとするみたいです。
ルートディレクトリに存在しなかったら下の階層まで探索するとかはしてくれません。複数個biome.jsonがあったらどうすんのってなりますもんね。

というわけでルートディレクトリにシンボリックリンクを作ることによって拡張機能が見つけられるようにしてあげました。
フロントエンドのみで使用するものをルートに置くのはちょっと気持ち悪いですが、現状この対策が最も安パイな気がします。
よりよい解決策をお持ちの方はコメントお待ちしております🙇

Discussion