Golang에서 `go get`에서 파일을 제외하는 방법
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- Go 빌드 제약 조건(
//go:build tag
)을 사용하여 컴파일에서 파일을 제외합니다. go.mod
로 디렉터리를 분리하여 빌드 및 문서에 포함되는 것을 방지합니다.- 빌드 과정에서
-tags
를 사용하여 명시적으로 포함하지 않는 한 제외된 파일은 무시됩니다.
Go에서는 빌드 과정에서 포함되는 파일을 관리하는 것이 깔끔하고 효율적인 코드베이스를 유지하는 데 필수적입니다. go get
명령어는 주로 패키지를 다운로드하고 설치하는 데 사용되지만, 빌드 중 특정 파일의 포함을 제어하는 것은 빌드 제약 조건(빌드 태그라고도 함)을 통해 이루어집니다. 이러한 지시문을 통해 개발자는 지정된 조건에 따라 빌드에서 파일을 포함하거나 제외할 수 있습니다.
빌드 제약 조건 이해
빌드 제약 조건은 Go 소스 파일의 맨 위에 배치되는 특수 주석으로, 빌드 과정에서 파일이 패키지에 포함되어야 하는 시기를 지정합니다. 특정 빌드 컨텍스트에서 관련이 없는 파일을 제외하는 데 특히 유용합니다.
빌드 제약 조건의 구문
Go 버전 1.17 이상에서는 빌드 제약 조건의 구문은 다음과 같습니다.
//go:build [조건]
- 17 이전 버전의 구문은 다음과 같습니다.
// +build [조건]
이러한 라인은 소스 파일의 패키지 선언 앞에 나타나야 합니다.
빌드에서 파일 제외
빌드에서 파일을 제외하려면 사용자 정의 빌드 태그를 정의할 수 있습니다. 예를 들어 exclude
태그를 사용하여 파일을 제외하려면 파일 맨 위에 다음 라인을 추가합니다.
//go:build exclude
- 17 이전 버전의 경우:
// +build exclude
이 지시문을 사용하면 Go 툴체인은 빌드 중에 exclude
태그가 명시적으로 지정되지 않는 한 파일을 무시합니다. exclude
태그가 있는 파일을 포함하여 빌드하려면 다음을 사용하십시오.
go build -tags=exclude
기본적으로 -tags=exclude
플래그 없이 go build
를 실행하면 이러한 파일이 빌드에서 제외됩니다.
실제 예제
프로덕션 빌드에 적합하지 않은 디버깅 유틸리티가 포함된 debug.go
파일이 있다고 가정합니다. debug.go
맨 위에 다음을 추가합니다.
//go:build debug
프로덕션용으로 빌드할 때는 다음을 실행하십시오.
go build
이 명령은 debug.go
를 빌드에서 제외합니다. 디버깅 유틸리티를 포함하는 개발 빌드의 경우 다음을 사용하십시오.
go build -tags=debug
디렉터리 제외
빌드 및 문서에서 examples
와 같은 전체 디렉터리를 제외하려면 examples
디렉터리 안에 별도의 go.mod
파일을 배치할 수 있습니다. 이 접근 방식은 디렉터리를 별도의 모듈로 처리하여 주 빌드 프로세스에 포함되지 않도록 합니다. Go 포럼에서 논의된 바와 같이, examples
디렉터리에 go.mod
파일을 추가하면 해당 디렉터리가 주 모듈에서 효과적으로 격리됩니다.
결론
go get
은 패키지를 검색하고 설치하는 데 중점을 두는 반면, 빌드 중에 포함되는 파일을 제어하는 것은 빌드 제약 조건을 통해 관리됩니다. 빌드 태그를 효과적으로 사용하고 예제 디렉터리에 대한 별도의 go.mod
파일과 같은 고려 사항으로 프로젝트를 구성함으로써 Go에서 깔끔하고 효율적인 빌드 프로세스를 유지할 수 있습니다.
FAQs
파일 맨 위에 //go:build [tag]
를 추가하고 빌드 중에 태그를 지정하지 마십시오.
예, 디렉터리 안에 go.mod
파일을 배치하여 별도의 모듈로 처리하면 됩니다.
-tags
로 명시적으로 포함하지 않는 한 빌드 제약 조건이 있는 파일은 제외됩니다.
Go 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하세요.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하세요. 요청 없음, 요금 없음.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불합니다.
- 예: 25달러로 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 지표 및 로깅.
손쉬운 확장성 및 고성능
- 높은 동시성을 쉽게 처리하도록 자동 확장됩니다.
- 운영 오버헤드가 없습니다. 빌드에만 집중하세요.
설명서에서 자세히 알아보세요!
X에서 팔로우하세요: @LeapcellHQ