格式化工具 (Formatters)

使用特定语言的格式化程序自动美化代码
OpenCode 在写入或编辑文件后,会自动使用特定语言的格式化工具。这确保了生成的代码符合您项目的代码风格。

工作原理 (How it works)

当 OpenCode 写入或修改文件时,它会执行以下操作:
  1. 根据所有已启用的格式化工具检查文件的 扩展名
  2. 对该文件运行相应的 格式化命令
  3. 自动应用格式化更改

内置格式化工具 (Built-in)

OpenCode 为流行语言和框架预置了多种格式化工具。以下是内置列表及其要求:
格式化工具支持的扩展名运行要求
gofmt.go环境中需安装 gofmt 命令
mix.ex, .exs, .eex, .heex, .leex 等环境中需安装 mix 命令
prettier.js, .ts, .jsx, .tsx, .html, .css, .md, .json, .yaml 等package.json 中需包含 prettier 依赖
biome.js, .ts, .jsx, .tsx, .json, .jsoncpackage.json 中需包含 @biomejs/biome 依赖

配置 (Configure)

您可以通过 opencode.json 中的 formatter 字段自定义格式化行为。
每个格式化配置支持以下属性:
  • disabled: (boolean) 设置为 true 可禁用该格式化工具。
  • command: (string[]) 要运行的格式化命令。
  • environment: (object) 运行命令时的环境变量。
  • extensions: (string[]) 该工具适用的文件扩展名列表。

禁用格式化工具 (Disabling formatters)

  • 全局禁用:formatter 设置为 false
{
  "formatter": false
}
  • 禁用特定工具:
{
  "formatter": {
    "prettier": {
      "disabled": true
    }
  }
}

自定义格式化工具 (Custom formatters)

您可以覆盖内置工具或添加全新的格式化程序。例如,自定义 prettier 的运行方式或添加不支持的语言:
opencode.json
{
  "formatter": {
    "prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    }
  }
}
[!TIP] 在命令中使用 $FILE 占位符来代表当前正在被格式化的文件。