포매터
opencode는 언어별 포매터를 사용합니다.
opencode는 언어 별 형식을 사용하여 작성 또는 편집 한 후 자동으로 파일을 포맷합니다. 이 생성 된 코드는 프로젝트의 코드 스타일을 따릅니다.
내장
opencode는 인기있는 언어 및 프레임 워크에 대한 몇 가지 내장 형식자와 함께 제공됩니다. 아래는 formatters, 지원된 파일 확장 및 명령 또는 구성 옵션의 목록입니다.
| 포매터 | 확장자 | 요구 사항 |
|---|---|---|
| gofmt | .go | gofmt 명령 사용 가능 |
| Mix | .ex, .ex, .eex, .heex, .leex, .neex, .sface | mix 명령 사용 가능 |
| Biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 기타 | biome.json(c) 구성 파일 |
| Zig | .zig, .zon | zig 명령 사용 가능 |
| clang-format | .c, .cpp, .h, .hpp, .ino, 기타 | .clang-format 구성 파일 |
| ktlint | .kt, .kts | ktlint 명령 사용 가능 |
| ruff | .py, .pyi | 구성 가능한 ruff 명령 |
| rustfmt | .rs | rustfmt 명령 사용 가능 |
| cargo fmt | .rs | cargo fmt 명령 사용 가능 |
| uv | .py, .pyi | uv 명령 사용 가능 |
| rubocop | .rb, .rake, .gemspec, .ru | rubocop 명령 사용 가능 |
| StandardRB | .rb, .rake, .gemspec, .ru | standardrb 명령 사용 가능 |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier 명령 사용 가능 |
| Air | .R | air 명령 사용 가능 |
| Dart | 다트 | dart 명령 |
| ocamlformat | .ml, .mli | ocamlformat 명령 사용 가능·.ocamlformat 설정 파일 |
| Terraform | .tf, .tfvars | terraform 명령 사용 가능 |
| gleam | .gleam | gleam 명령 사용 가능 |
| nixfmt | .nix | nixfmt 명령 사용 가능 |
| shfmt | .sh, .bash | shfmt 명령 사용 가능 |
| Pint | .php | laravel/pint 의존도 composer.json |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | oxfmt Dependency in package.json, experimental env 변수 플래그 |
| ormolu | .hs | ormolu 명령 사용 가능 |
그래서 프로젝트가 prettier를 package.json에 가지고 있다면, opencode는 자동으로 그것을 사용합니다.
작동 방식
opencode가 파일을 작성하거나 편집할 때:
- 모든 활성화된 formatters에 대한 파일 확장을 확인합니다.
- 파일에 적절한 형식의 명령을 실행합니다.
- 형식 변경을 자동으로 적용합니다.
이 과정은 배경에서 발생합니다. 코드 스타일은 수동 단계없이 유지됩니다.
구성
opencode config의 formatter 섹션을 통해 형식기를 사용자 정의 할 수 있습니다.
{ "$schema": "https://opencode.ai/config.json", "formatter": {}}각 formatter 구성은 다음을 지원합니다:
| 속성 | 타입 | 설명 |
|---|---|---|
disabled | boolean | true로 설정하여 포매터 비활성화 |
command | 문자열[] | 형식을 실행하는 명령 |
environment | 객체 | 형식의 실행시 설정하는 환경 변수 |
extensions | string[] | 이 형식의 파일 확장자 취급 |
몇 가지 예제를 살펴 보자.
포매터 비활성화
모든 포매터를 비활성화하려면 formatter를 false로 설정하십시오:
{ "$schema": "https://opencode.ai/config.json", "formatter": false}특정 포매터의 경우, disabled를 true로 설정하십시오:
{ "$schema": "https://opencode.ai/config.json", "formatter": { "prettier": { "disabled": true } }}사용자 정의 포매터
내장 형식자를 무시하거나 명령, 환경 변수 및 파일 확장을 지정하여 새로운 것을 추가 할 수 있습니다.
{ "$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 placeholder는 형식의 파일 경로로 대체됩니다.