프로젝트 소개
이 저장소는 Go 애플리케이션에 대한 일반적인 역사적인 및 새롭게 등장하는 프로젝트 레이아웃 패턴 세트를 제공합니다. 이는 코어 Go 팀에 의해 공식적으로 정의된 표준이 아니며, 대신 Go 생태계에서 관찰된 규칙을 문서화하기 위한 커뮤니티의 노력입니다.
레이아웃은 다음과 같은 주요 디렉토리를 정의합니다:
- /cmd: 주 애플리케이션; 각 서브디렉토리는 실행 가능한 이름과 일치하며, /internal 및 /pkg에서 코드를 가져오는 최소한의 main 함수를 포함합니다.
- /internal: 외부 가져오기를 방지하기 위해 Go 컴파일러 자체에 의해 강제되는 프라이빗 애플리케이션 및 라이브러리 코드입니다. 임의 깊이에 중첩할 수 있습니다.
- /pkg: 외부 사용을 위한 라이브러리 코드입니다. 코드가 안전하게 가져올 수 있도록 통신합니다. /internal은 프라이빗 패키지를 위한 컴파일러 강제 대체입니다.
- /vendor: Go Modules(go mod vendor)를 통해 관리되는 애플리케이션 종속성입니다.
- /api: OpenAPI/Swagger 사양 파일, JSON 스키마 파일, 프로토콜 정의입니다.
- /web: 정적 웹 자산, 서버측 템플릿, SPAs입니다.
- /configs: 구성 파일 템플릿 또는 기본 구성입니다.
- /init: 시스템 초기화(systemd, upstart, sysv) 및 프로세스 관리자 구성입니다.
- /scripts: 루트 Makefile을 단순하게 유지하기 위한 빌드, 설치, 분석 스크립트입니다.
- /build: 패키징(AMI, Docker, deb, rpm) 및 CI 구성입니다.
- /deployments: IaaS/PaaS, 컨테이너 오케스트레이션 배포 구성(docker-compose, kubernetes/helm, terraform)입니다.
- /test: 추가 외부 테스트 애플리케이션 및 테스트 데이터입니다.
- /docs, /tools, /examples, /third_party, /githooks, /assets, /website: 문서화, 도구, 예제, 외부 도움말, git 훅, 자산, 웹사이트 데이터에 대한 지원 디렉토리입니다.
README는 /src 디렉토리(Java 규칙)를 사용하지 않는 것을 권장하고, 작은 프로젝트나 시범 프로젝트에서는 간단하게 시작(single main.go와 go.mod)한 후 프로젝트가 성장함에 따라 더 구조화된 레이아웃을 채택하도록 권장합니다. gofmt 및 staticcheck를 사용하여 포맷팅 및 린팅을 수행하도록 권장합니다. README는 중국어, 일본어, 한국어, 프랑스어, 스페인어, 러시아어, 힌디어, 벵골어 등 18개 이상의 언어로 제공됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.