You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NvChad中添加biome.json后格式化生效,vtsls是否自动切换至Biome?

问题解答

这种隐式切换属于正常行为

你遇到的情况是Neovim(尤其是NvChad这类预设配置)里的常见逻辑:格式化工具的优先级会受项目本地配置文件影响。

  • 之前没有biome.json时,你的JS/TS文件格式化大概率由vtsls(Vue/TS语言服务)处理,而vtsls默认的格式化规则并不强制添加分号,或者NvChad的格式化逻辑没有优先调用Biome。
  • 当你添加biome.json后,NvChad的格式化模块(通常基于内置LSP格式化或配套插件)检测到Biome的配置文件,会自动优先调用Biome处理JS/TS文件的格式化——哪怕你配置的是默认值,配置文件的存在相当于明确告诉编辑器:“用Biome来处理这个项目的代码规范”。

Biome本身确实默认semicolons: "always",但它的激活逻辑可能依赖本地配置文件的存在,或者NvChad的规则是只有当工具的配置文件存在时,才会将其列为优先格式化提供者。

你并未遗漏必要的显式配置,但可以主动控制优先级

这种隐式切换不算配置遗漏,但如果你想避免依赖配置文件触发工具切换,可以显式指定格式化工具的优先级:

比如在NvChad的custom/configs/lspconfig.lua中,针对JS/TS文件配置优先使用Biome格式化:

local lspconfig = require("lspconfig")
local on_attach = function(client, bufnr)
  -- 禁用vtsls的格式化能力,让Biome独占
  if client.name == "vtsls" then
    client.server_capabilities.documentFormattingProvider = false
    client.server_capabilities.documentRangeFormattingProvider = false
  end
end

lspconfig.biome.setup({
  on_attach = on_attach,
  capabilities = require("cmp_nvim_lsp").default_capabilities(),
})

lspconfig.vtsls.setup({
  on_attach = on_attach,
  capabilities = require("cmp_nvim_lsp").default_capabilities(),
})

或者如果你用的是NvChad内置的conform.nvim格式化插件,可以在custom/configs/conform.lua中指定优先级:

local conform = require("conform")
conform.setup({
  formatters_by_ft = {
    javascript = { "biome" },
    typescript = { "biome" },
    -- 其他文件类型配置...
  },
})

这样无论有没有biome.json,都会优先用Biome处理JS/TS文件的格式化,避免隐式切换的不确定性。

内容的提问来源于stack exchange,提问作者Mykola Zotko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:43:08