Biome

Zed 扩展

关于 Biome 的 Zed 扩展的说明

安装

需要 Zed >= v0.131.0

该扩展可在 Zed 编辑器内的扩展视图中找到。打开 zed: extensions 并搜索 Biome。它在底层运行 Biome 二进制文件,并按以下顺序检查 Biome 的安装:

  1. 在 Zed 配置中指定的路径,例如这样:
  {
    "lsp": {
      "biome": {
       "binary": {
          "path": "/var/biome-2.2.3/bin/biome",
          "arguments": [
            "lsp-proxy"
         ]
        }
      }
    }
  }
  1. 通过 package.json 在本地安装的 Biome
  2. 安装在 PATH 中的系统级 Biome

如果以上都不存在,它会请求 Zed 使用 npm 安装 Biome 并加以使用。

配置

config_path

默认情况下,配置文件必须位于工作区根目录

否则,可以通过 lsp 设置进行配置:

{
  "lsp": {
    "biome": {
      "settings": {
        "config_path": "<path>/biome.json"
      }
    }
  }
}

require_config_file

仅当项目包含配置文件时,它才启用 Biome:

默认值:false

{
  "lsp": {
    "biome": {
      "settings": {
        "require_config_file": true
      }
    }
  }
}

inline_config

Biome 配置的内联版本。此配置中的选项会覆盖从磁盘读取的任何 biome.json 文件中的选项(或默认值)。

例如,假设你的项目以 error 严重性等级启用了 noConsole 规则:

{
  "linter": {
    "rules": {
      "suspicious": {
        "noConsole": "error"
      }
    }
  }
}

但在本地开发期间,你想停用这条规则,因为它很有用,而你又不想看到红色波浪线。在 inline_config 中,你可以写成类似下面的形式:

{
  "lsp": {
    "biome": {
      "settings": {
        "inline_config": {
          "linter": {
            "rules": {
              "suspicious": {
                "noConsole": "off"
              }
            }
          }
        }
      }
    }
  }
}

goto_definition

在编辑器中启用转到定义功能。

默认值:false

{
  "lsp": {
    "biome": {
      "settings": {
        "goto_definition": false
      }
    }
  }
}

格式化

要将语言服务器用作格式化器,请在设置中将 biome 指定为你的格式化器:

{
  "languages": {
    "Astro": { "formatter": { "language_server": { "name": "biome" } } },
    "CSS": { "formatter": { "language_server": { "name": "biome" } } },
    "GraphQL": { "formatter": { "language_server": { "name": "biome" } } },
    "HTML": { "formatter": { "language_server": { "name": "biome" } } },
    "JSON": { "formatter": { "language_server": { "name": "biome" } } },
    "JSONC": { "formatter": { "language_server": { "name": "biome" } } },
    "JSX": { "formatter": { "language_server": { "name": "biome" } } },
    "JavaScript": { "formatter": { "language_server": { "name": "biome" } } },
    "Svelte": { "formatter": { "language_server": { "name": "biome" } } },
    "TSX": { "formatter": { "language_server": { "name": "biome" } } },
    "TypeScript": { "formatter": { "language_server": { "name": "biome" } } },
    "Vue.js": { "formatter": { "language_server": { "name": "biome" } } },
  }
}

更多信息请见语言支持

仅在存在 biome.json 时启用 biome

{
  "lsp": {
    "biome": {
      "settings": {
        "require_config_file": true
      }
    }
  }
}

格式化时运行代码操作:

{
  "languages": {
    "JavaScript": {
      "formatter": { "language_server": { "name": "biome" } },
      "code_actions_on_format": {
        "source.fixAll.biome": true,
        "source.organizeImports.biome": true
      }
    },
    "TypeScript": {
      "formatter": { "language_server": { "name": "biome" } },
      "code_actions_on_format": {
        "source.fixAll.biome": true,
        "source.organizeImports.biome": true
      }
    },
    "TSX": {
      "formatter": { "language_server": { "name": "biome" } },
      "code_actions_on_format": {
        "source.fixAll.biome": true,
        "source.organizeImports.biome": true
      }
    }
  }
}

如果你想在保存时应用不安全修复,你必须将规则的代码修复设为安全

基于项目的配置

你可以将这些设置放在项目文件夹根目录的 Zed 项目设置(.zed/settings.json)中,或作为 Zed 用户设置(~/.config/zed/settings.json)放入,后者默认会应用于所有项目。

为特定项目禁用 biome

你可以通过以下方式,在项目中为某个特定语言(如 GraphQL)排除 biome:

{
  "languages": {
    "GraphQL": {
      "language_servers": [ "!biome", "..." ]
    }
  }
}

全局设置

不建议将 biome 添加到 Zed settings.json 的顶层 language_serversformattercode_actions_on_format 键中。在全局将 biome 指定为 language_serverformatter,可能会破坏 Biome 不支持的语言(如 Rust、Python 等)的功能。支持的完整语言列表请见语言支持

本文档此前曾建议使用全局设置;请将你的 Zed 设置改为按语言逐一显式配置 biome。