Ch8. 포매터 자동화
opencode.json의 format 키로 확장자별 포매터를 지정해 파일 변경 시 prettier·black·gofmt 등을 자동 실행하고, 프론트/백엔드 팀 표준을 강제하는 방법입니다.
핵심 요약
opencode.json의format키에"*.ts": "prettier --write"처럼 확장자별 포매터 명령을 지정합니다.- OpenCode가 파일을 수정하면 변경 감지 → 확장자 매칭 → 포매터 실행 → 결과 반영 순서로 알아서 포매팅합니다.
- v1.2.6에서 D 언어(
dfmt)와 Clojure(cljfmt) 포매터 지원이 추가되었습니다. - 프론트엔드(prettier)·백엔드(black/gofmt/rustfmt)별로 설정을 분리하고
*.{ts,tsx}같은 glob으로 묶어 관리합니다. - 대규모 리팩토링 중에는 포매터 설정을 임시 제거해 불필요한 diff 충돌을 피합니다.
OpenCode는 파일이 바뀔 때마다 포매터를 자동으로 돌립니다. 팀 코드 스타일을 강제하려면 포매터 설정을 빠뜨리지 마세요.
포매터 설정
opencode.json에서 파일 확장자별 포매터를 지정합니다.
{
"format": {
"*.ts": "prettier --write",
"*.tsx": "prettier --write",
"*.py": "black",
"*.go": "gofmt -w",
"*.rs": "rustfmt",
"*.d": "dfmt",
"*.clj": "cljfmt fix"
}
}v1.2.6 추가
D 언어(dfmt)와 Clojure(cljfmt) 포매터가 v1.2.6에서 추가되었습니다.
동작 방식
- OpenCode가 파일을 수정하면 변경 감지
- 파일 확장자에 매칭되는 포매터를 조회
- 해당 포매터를 자동 실행
- 포매팅 결과를 파일에 반영
팀 표준 포매터 설정
{
"format": {
"*.ts": "prettier --write",
"*.tsx": "prettier --write",
"*.css": "prettier --write",
"*.json": "prettier --write"
}
}{
"format": {
"*.py": "black",
"*.go": "gofmt -w",
"*.rs": "rustfmt"
}
}{
"format": {
"*.ts": "prettier --write",
"*.tsx": "prettier --write",
"*.py": "black",
"*.go": "gofmt -w",
"*.rs": "rustfmt"
}
}고급 팁
- 프로젝트 표준 포매터 고정: 포매터 옵션을
opencode.json에 팀 단위로 고정 - 파일 유형별 분리: 언어별 포매터를 분리해 충돌 최소화
- 포매터 비활성화: 대규모 리팩토링 시 포매터 설정을 임시로 제거
- Glob 패턴 활용:
*.{ts,tsx}처럼 여러 확장자를 묶어 관리