Formatters
opencode uses language specific formatters.
opencode는 언어 별 형식을 사용하여 작성 또는 편집 한 후 자동으로 파일을 포맷합니다. 이 생성 된 코드는 프로젝트의 코드 스타일을 따릅니다.
내장
opencode는 인기있는 언어 및 프레임 워크에 대한 몇 가지 내장 형식자와 함께 제공됩니다. 아래는 formatters, 지원된 파일 확장 및 명령 또는 구성 옵션의 목록입니다.
| 형식 | 연장 | 요구 사항 |
|---|---|---|
| gofmt | .go | gofmt 명령 가능 |
| 믹스 | .ex, .ex, .eex, .heex, .leex, .neex, .sface | mix 명령 가능 |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
| 바이오메 | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 기타 | biome.json(c) 구성 파일 |
| 지그 | .zig, .zon | zig 명령 가능 |
| clang-format | .c, .cpp, .h, .hpp, .ino, 기타 | .clang-format 구성 파일 |
| ktlint | .kt, .kts | ktlint 명령 가능 |
| ruff | .py, .pyi | 구성 가능한 ruff 명령 |
| rustfmt | .rs | rustfmt 명령 가능 |
| 화물fmt | .rs | cargo fmt 명령 가능 |
| uv | .py, .pyi | uv 명령 가능 |
| rubocop | .rb, .rake, .gemspec, .ru | rubocop 명령 사용 가능 |
| 표준 | .rb, .rake, .gemspec, .ru | standardrb 명령 사용 가능 |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier 명령 가능 |
| 공기 | .R | air 명령 가능 |
| 다트 | 다트 | dart 명령 |
| ocamlformat | .ml, .mli | ocamlformat 명령 가능·.ocamlformat 설정 파일 |
| 지형 | .tf, .tfvars | terraform 명령 가능 |
| gleam | .gleam | gleam 명령 가능 |
| nixfmt | .nix | nixfmt 명령 가능 |
| shfmt | .sh, .bash | shfmt 명령 가능 |
| 핀 | .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 | 불린 | 이 세트를 true로 포맷터 비활성화 |
command | 문자열[] | 형식을 실행하는 명령 |
environment | 객체 | 형식의 실행시 설정하는 환경 변수 |
extensions | string[] | 이 형식의 파일 확장자 취급 |
몇 가지 예제를 살펴 보자.
Disabling 형식자
false에 formatter를 세계로 바꾸기 위하여 all formatters:
{ "$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는 형식의 파일 경로로 대체됩니다.