何もしないと[[Biome]]や[[prettierd]]によるフォーマットが優先されてしまうため、[[テーブル (Lua)|テーブル]]ではなく`function`を定義して、[[カレントディレクトリ (Neovim)|カレントディレクトリ]]が[[Deno]]プロジェクトルートの場合だけ[[LSP]]を優先する(fallback)ようにする。
```lua
opts = function()
local function is_deno_project()
local cwd = vim.fn.getcwd()
return vim.fn.filereadable(cwd .. "/deno.json") == 1 or vim.fn.filereadable(cwd .. "/deno.jsonc") == 1
end
local web_formatter = function()
if is_deno_project() then
-- Denoプロジェクトの場合はLSP(denols)のフォーマットを使う (fallback)
return {}
end
return { "biome-check", "prettierd", stop_after_first = true }
end
return {
formatters_by_ft = {
typescript = web_formatter,
},
format_on_save = {
timeout_ms = 1500,
-- conformで定義したformatterが存在しないならLSPのフォーマッターを使う
lsp_format = "fallback",
},
}
end,
```