Files
opencode/packages/web/src/content/docs/zh-cn/formatters.mdx
2026-02-09 18:11:59 -06:00

131 lines
8.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 格式化程序
description: opencode 使用特定于语言的清理程序。
---
使用在语言的格式化程序编写或编辑文件后opencode会自动格式化文件。这可以确保生成的代码遵循项目的代码风格。
---
## 內建
opencode附带了多个适用于流行语言和框架的内置初始化程序。下面是格式化程序、支持的文件扩展名以及所需的命令或配置选项的列表。
| 格式化程序 | 擴展 | 要求 |
| ------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| 政府 | .go | `gofmt` 命令可用 |
| 混合 | .ex、.exs、.eex、.heex、.leex、.neex、.sface | `mix` 命令可用 |
| 更漂亮 | .js、.jsx、.ts、.tsx、.html、.css、.md、.json、.yaml 和 [更多的](https://prettier.io/docs/en/index.html) | 在 `package.json` 中有 `prettier` 依赖 |
| 生物群系 | .js、.jsx、.ts、.tsx、.html、.css、.md、.json、.yaml 和 [更多的](https://biomejs.dev/) | `biome.json(c)` 配置文件 |
| 之字形 | .zig、.zon | `zig` 命令可用 |
| clang 格式 | .c、.cpp、.h、.hpp、.ino 和 [更多的](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` 配置文件 |
| 克特林特 | .kt、.kts | `ktlint` 命令可用 |
| 领子 | .py, .pyi | `ruff` 命令可通过配置 |
| 生锈 | .rs | `rustfmt` 命令可用 |
| 货物运输 | .rs | `cargo fmt` 命令可用 |
| 美丽 | .py, .pyi | `uv` 命令可用 |
| 鲁博科普 | .rb、.rake、.gemspec、.ru | `rubocop` 命令可用 |
| 标准rb | .rb、.rake、.gemspec、.ru | `standardrb` 命令可用 |
| html美化器 | .erb、.html.erb | `htmlbeautifier` 命令可用 |
| 空气 | .R | `air` 命令可用 |
| 飞镖 | .dart | `dart` 命令可用 |
| ocaml 格式 | .ml、.mli | `ocamlformat` 可用命令和 `.ocamlformat` 配置文件 |
| 地形 | .tf、.tfvars | `terraform` 命令可用 |
| 微光 | .gleam | `gleam` 命令可用 |
| 尼克斯夫MTT | .nix | `nixfmt` 命令可用 |
| sfmt | .sh、.bash | `shfmt` 命令可用 |
| 品脱 | .php | 在 `composer.json` 中有 `laravel/pint` 依赖 |
| oxfmt实验 | .js、.jsx、.ts、.tsx | 在 `package.json` 中有 `oxfmt` 依赖并启用[实验环境变量标记](/docs/cli/#experimental) |
| 奥尔莫鲁 | .hs | `ormolu` 命令可用 |
因此,如果您的项目的`package.json`或`prettier`opencode将自动使用它。
---
## 它是如何運作的
当opencode写入或编辑文件时
1. 根據所有啟用的格式化程序檢查文件擴展名。
2. 對文件運行適當的格式化程序命令。
3. 自動應用格式更改。
此過程在後台進行,確保無需任何手動步驟即可維護您的代碼樣式。
---
## 配置
您可以通过 opencode 配置中的 `formatter` 部分自定义程序。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
每個格式化程序配置支持以下內容:
| 物業 | 類型 | 描述 |
| ------------- | -------- | -------------------------------- |
| `disabled` | 布尔 | 将其设置为 `true` 以取消删除程序 |
| `command` | 字符串[] | 格式化运行的命令 |
| `environment` | 对象 | 运行格式化程序时要设置的环境变量 |
| `extensions` | 字符串[] | 此整理程序应处理的文件扩展名 |
讓我們看一些例子。
---
### 禁用格式化程序
要全局取消**所有**清理程序,然后`formatter`设置为`false`
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
要取消**特定**删除程序,则`disabled`设置为`true`
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### 自定義格式化程序
您可以覆蓋內置格式化程序或通過指定命令、環境變量和文件擴展名添加新格式化程序:
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
命令中的 **`$FILE` 占位符** 将替换为正在格式化的文件的路径。